[转]用g++编译动态链接库

 

  写了一个最简单的动态链接库程序,使用g++命令行编译。怕以后忘记,就把它记到blog中。
动态库导出头文件:
/**
  * file: dll.h
  * Powered by JGood 2009-09-22
  */

#ifndef __dll_h__
#define __dll_h__

#ifdef __MY_DLL_LIB__
    #define DLL_EXPORT extern "C" __declspec(dllexport)
#else
    #define DLL_EXPORT extern "C" __declspec(dllimport)
#endif

DLL_EXPORT int jmax(int x, int y);

#endif
动态库实现:
编译成obj文件:g++ -c -o dll.obj dll.cpp
链接obj,生成dll: g++ -shared -o dll.so dll.obj
/**
  * file: dll.cpp
  * Powered by JGood 2009-09-22
  */

#define __MY_DLL_LIB__
#include "dll.h"

int jmax(int x, int y)
{
    return x > y ? x : y;
}


调用动态库:
直接编译成exe: g++ main.cpp dll.so -o main.exe
/**
  * file: main.cpp
  * Powered by JGood 2009-09-22
  */

#include "dll.h"
#include <iostream>

using namespace std;

int main()
{
    int a = 20;
    int b = 40;
    cout << jmax(a, b) << endl;

    return 0;

posted @ 2010-12-02 17:48  网络小虫  阅读(3169)  评论(0编辑  收藏  举报