码迷,mamicode.com
首页 > 其他好文 > 详细

mingw制作dll

时间:2016-10-09 01:03:20      阅读:314      评论:0      收藏:0      [点我收藏+]

标签:mingw dll vs

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

标签:mingw dll vs

原文地址:http://sysq2012cto.blog.51cto.com/8202674/1859495

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!