有三种方法可以在VC生成的dll中导出原始函数名称:
1. 使用.def文件
这个方法通用性最好,建议使用。
2. 使用#pragma comment(linker, ......)
该方法受限于VC的编译器,x86和x64的编译器编译出来的函数名称是不一样的。因此需要根据这两种编译器分别编写pragma。灵活性较差。
如: int add(int *a); 该函数在x86上生成的函数名字为:_add@4, 而在x64编译器上生成的函数名字则为:_add@8。
3. 函数以extern "C"修饰,参数调用规则使用缺省或cdecl(最起码不可以是stdcall)
如
extern "C"
__declspec(dllexport)
int [
cdecl] add(
int, int);
该方法限定性较大,用起来比较死板,但省却了.def。