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

MinGW gcc 生成动态链接库 dll 的一些问题汇总 (补充)

时间:2015-03-16 23:11:53      阅读:369      评论:0      收藏:0      [点我收藏+]

标签:

我曾经写过一个小短文,介绍MinGW gcc 生成动态链接库 dll 的一些问题。当时写的并不全面。最近又遇到写新的问题。这里记录一下,做个补充。

通常情况下,dll 中的函数如果采用 _stdcall ,则生成的dll中函数名会被修饰。
比如有如下的函数:

//dll.c
int  _stdcall add(int a, int b)
{
    return a + b;
}

最终 dll 文件中的函数名是 add@8

但是有时我们希望函数名不要添加这种修饰,就像 windows api 函数那样。如果用VS 编译器的话需要我们写个 def 文件才能实现。如果导出的函数很多,这样是很繁琐的。
利用 MinGW gcc 就简单的多。下面的语句就可以实现:

gcc dll.c  -shared -o dll2.dll -Wl,--kill-at,--output-def,dll2.def,--out-implib,dll2.a

这样生成的 dll2.dll 中函数名就没有多余的修饰。

这样的dll如何使用了。我们用gcc 编译时需要给链接器传个参数:

gcc -Wl,--enable-stdcall-fixup main.c dll2.a -o test.exe

MinGW gcc 生成动态链接库 dll 的一些问题汇总 (补充)

标签:

原文地址:http://blog.csdn.net/liyuanbhu/article/details/44316159

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