1、配置mingw环境,下载使用的mingw下的库

windows和linux中都可以

(windows中gxx命令)

(linux中i686-w64-mingw32-gxx和x86-w64-mingw32-gxx)


2、dll的头文件

#ifndef _DLLTEST_H

#define _DLLTEST_H


#include


#define EXPORT __declspec(dllexport)


extern "C"

{

int EXPORT my_dll(void);

}


#endif


注释:如果为cpp的头文件不用添加extern “C”

      把需要在外部使用的函数都用EXPORT定义


3、使用gcc或g++编译相应的文件

    a、下面的命令行将这个代码编译成 dll

    gcc dlltest.c -shared -o dlltest.dll -Wl,--out-implib,dlltest.lib

    其中 -shared 告诉gcc dlltest.c 文件需要编译成动态链接库。-Wl 表示后面的内容是ld 的参数,需要传递给 ld。 --out-implib,dlltest.lib 表示让ld 生成一个名为 dlltest.lib 的导入库。

    如果还需要 .def 文件,则上面的命令行可以写为:

    gcc dlltest.c -shared -o dlltest.dll -Wl,--output-def,dlltest.def,--out-implib,dlltest.a

    b、如果不能生成lib导入库,需要使用dll来生成lib导入库(在vs中使用是需要生成相应的导入库)

    使用pexports来生成def文件(pexports需要下载,将pexports.exe放在mingw的bin目录下即可)

    pexports dlltest.dll > dlltest.def

    使用lib来生成lib导入文件(lib需要下载,将lib.exe放在mingw的bin目录下,同时放入相应的依赖库)

    lib /machine:ix86 /def:dlltest.def

4、根据需要在vs中调用相应的dll、lib库