最近有个需求,要生成一个dll 文件,文件中的函数都是采用 stdcall 函数调用约定,但是不希望函数名被修饰(add 被修饰成 add@8)。这时就要用def 文件了。
比如我有下面两个函数:
- extern "C" int _stdcall add(int a, int b)
- {
- return a + b;
- }
- extern "C" int _stdcall sub(int a, int b)
- {
- return a - b;
- }
def 文件(我命名为dll.def)可以这样写:
- LIBRARY add_sub
- EXPORTS
- add
- sub
VC6 来编译的话很简单,只要把 dll.def 文件加入到工程里就可以了,可是到了vs2010 ,发现这样做竟然没用,生成的 dll 依然是啥都没导出来。百度了一下,发现需要自己指定Module Definition file。