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

我曾经写过一个小短文,介绍MinGW gcc 生成动态链接库 dll 的一些问题。当时写的并不全面。最近又遇到写新的问题。这里记录一下,,做个补充。通常情况下,dll 中的函数如果采用 _stdcall ,则生成的dll中函数名会被修饰。比如有如下的函数://dll.cint _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 的一些问题汇总 (补充)

相关文章:

你感兴趣的文章:

标签云: