mingw制作dll
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mingw制作dll相关的知识,希望对你有一定的参考价值。
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 <stdio.h>
#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库
以上是关于mingw制作dll的主要内容,如果未能解决你的问题,请参考以下文章