今天编译/调用一个动态库折腾了很久。明明lib/dll编译成功了,但是被调用时,死活都报“函数符号找不到的”的错误。检查了好几遍lib/h文件路径设置是否ok,有无正确引用。都没有问题。来回折腾了我2个小时,最后发现原因是:导出函数定义和声明的规格不一致。为了避免犯这种低级小错误,在这里对VS编译动态库,编译的2种方法和注意事项,备忘一下。
为了能被其他程序正确调用链接,需要编译出dll动态库和相应的lib符合文件。有两种方法:
1/ 配置def文件:(linker-》input-》module define file)。
def可以同时输出dll和lib,但是dllexport方式,对C函数,经常只有dll无法生成lib,对导出类,dllexport可以生成dll和lib。
DLL中导出函数的两种方式(dllexport与.def文件):http://blog.youkuaiyun.com/lostyears/article/details/8482638
动态链接库全面浅析(一)-----Win32 动态链接库&