DLL导出函数的两种方法和存在的坑
使用dllexport导出函数
函数声明如下:
分几种情况讨论,是否使用extern “C”和__stdcall,共分为以下四种情况,
_declspec(dllexport) int fun1();
_declspec(dllexport) int __stdcall fun2();
extern "C" _declspec(dllexport) int fun3();
extern "C" _declspec(dllexport) int __stdcall fun4();
其导出函数如图所示
只有当添加extern "C"且不使用__stdcall时其导出函数的函数名不会发生改变,其他情况都会改变
使用.def文件导出函数
LIBRARY DllTest_Def
EXPORTS
fun1
fun2 @ 2 //注意空格
其中DllTest_Def是生成的dll名称,fun1是导出的函数名称,也可以在fun2后面添加@1,导出的函数名为依旧为fun2,@后面的数字表示导出函数的序号为n
可参考下列链接:https://www.cnblogs.com/findumars/p/8660427.html