常见原因:
- 没有正确的设置引用的lib,新手常犯这个错误,这是最容易解决的问题。
- extern "C"的问题。如果C++写的dll要给C程序用,那么就要注意extern "C"的问题。
- 没有正确的dllexport,用depends.exe或者dumpbin.exe可以检查dll的导出符号表。看看是否正确的导出了符号。
- UNICODE的区别,比如dll用了unicode进行编译,exe没用unicode,那么就会找不到符号。因为编码方式不一样。都用unicode或者mbcs可以解决这个问题。
- MFC和ATL的区别,比如dll导出了ATL的cstring,exe用了MFC的cstring,那么就可能不匹配,因而找不到符号。通过宏定义或者项目设置可以解决这个问题。