_declspec(dllexport) 的使用问题
在csdn上搜索了到相对问题,但没有满意的答案
在调用dll的应用程序中,用__declspec(dllexport) 声明函数程序照样通过,成功运行,这是什么原因?
比如 写了 一个动态库 a.dll
头文件 a.h 中
有
extern "C" __declspec(dllexport)
void fun();
函数
main.cpp中 调用fun()
#progma comment(lib,"a.lib")
extern "C" __declspec(dllexport) void fun();
......
程序照样运行,extern "C" __declspec(dllexport) void fun();=>void fun();不能运行
extern "C" __declspec(dllexport) void fun();=>extern "C" __declspec(dllimport) void fun(); 可以
ps: 有时去掉#progma comment(lib,"a.lib") 程序也可以照样运行。
我彻底恍惚了~
[解决办法]
dll保证dllexport,其它地方,dllexport或者dllimport或者没有都无所谓。
你的extern "C" __declspec(dllexport) void fun();=>void fun();不行,是因为缺少extern "C"
缺少#progma comment(lib,"a.lib")会连接不成功,但你可以在工程设置里面添加a.lib,效果一样。
你老是说运行成不成,我不明白,我理解你的意思应该是编译连接行不行。