不用 DEF 文件从 DLL 导出函数

传统的导出 DLL 函数的方法是使用模块定义文件 (.def),Visual C++ 提供了更简洁方便的方法,即 “__declspec(dllexport)” 关键字,例如:

但是通过查看工具我们可以发现,DLL 导出的函数名字实际上是 _MyExportFunction@4。还好,VC 提供了一个预处理指示符 “#pragma” 来指定链接选项,可以通过它达到我们的目的,如下:

这样再看,就会发现导出的函数名字已经成为了想要的 MyExportFunction。

更新 1(2005-01-31 14:51):TNND,上面这种方法竟然是两个符号一起导出,可恶!
更新 2(2005-09-17 11:16):终于知道了,应该把函数前面的 __declspec() 修饰去掉,也就是说,只需要第二条 pragma 指令即可。而且还可以使如下形式:

PRIVATE 的作用与其在 def 文件中的作用一样。

2条评论


  1. 去掉__stdcall和pragma只用__declspec(dllexport) int MyExportFunction(int iTest);就可以了,__stdcall没必要

    回复

    1. __stdcall 是必要的。你可以尝试写个 DLL,导出函数不写 __stdcall 让 VB 之类的别的语言调用一下看会发生什么。

      回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注