现在的位置: 首页 > 综合 > 正文

VC 使用 MinGW编写的dll

2014年02月10日 ⁄ 综合 ⁄ 共 931字 ⁄ 字号 评论关闭

转自:http://www.cnblogs.com/cuixs/archive/2011/01/01/1923774.html

参考文章:

①http://www.360doc.com/content/10/0907/16/169163_51891922.shtml

②http://www.adp-gmbh.ch/win/misc/mingw/dll.html

 

因为对IA32汇编格式不熟悉 - -! ,所以写了一些用C内嵌GNU汇编的代码来获取CPU的信息,想用VC来做界面,C函数用MinGW在Windows平台编译,完事遇到一个问题,gcc编译出来的dll文件VC无法识别,于是昨天晚上和今天下午都在查找资料,下面是我整理来的,不知道这样用合不合适啊,不合适你们砸我,谢谢,

步骤:

1,首先编译C,根据MinGW官网来的,当然它那个后边有一个C#的范例(但是用不上啊)。

 

1
gcc -Wall -shared source.c -o destination.dll

说明:-Wall 显示所有的警告消息。

   -shared 连接器将生成共享目标代码,该共享库可在运行时动态连接到程序形成完整的可执行体。

2,制作def文件,使用pexports工具,下载地址:http://www.emmestech.com/software/pexports-0.43/download_pexports.html

  这个文件可以放在windwos的path目录中,或者MinGW中,大概以后经常用到的。

1
pexports destination.dll -o > destination.def

 

3,然后有def文件生成lib文件

 

1
lib /machine:ix86 /def:destination.def

 

 执行后生成两个文件 destination.exp destination.lib

4,修改头文件,因为是在C++里面调用C函数,所以要通知编译器使用C的调用约定,使用extern “C” {} 。

 

extern "C"
{
//函数列表
}

5,在C++文件中添加代码

#pragma comment(lib, "destination.lib")
#include "source.h"

现在就可以正常编译了。。。。。

抱歉!评论已关闭.