LNK2001 无法解析的外部符号 __imp__CameraCreateSettingPage@24
用VS2017,Release X86进行编译时显示如下错误:
1>CWDMDlg.obj : error LNK2001: 无法解析的外部符号 __imp__CameraGetImageBuffer@16
1>CWDMDlg.obj : error LNK2001: 无法解析的外部符号 __imp__CameraImageProcess@16
1>CWDMDlg.obj : error LNK2001: 无法解析的外部符号 __imp__CameraImageOverlay@12
1>CWDMDlg.obj : error LNK2001: 无法解析的外部符号 __imp__CameraDisplayRGB24@12
1>CWDMDlg.obj : error LNK2001: 无法解析的外部符号 __imp__CameraReleaseImageBuffer@8
1>CWDMDlg.obj : error LNK2001: 无法解析的外部符号 _GT_GetSts@16
1>CWDMDlg.obj : error LNK2001: 无法解析的外部符号 _GT_Stop@8
1>CWDMDlg.obj : error LNK2001: 无法解析的外部符号 _GT_GetPrfPos@16
......
翻译为英文为:error LNK2001: unresolved external symbol __imp__CameraGetImageBuffer@16(方便google)
最近在看《调试九法:软硬件错误的排查之道》,决定按照里面学到的知识来解决上述问题。
1)理解系统。这两部分错误分别与相机和电机有关。除了代码本身,就是库文件,找到这两个对应的库文件。了解一下dll和lib文件的一些特性。
根据 lib和dll的区别、生成以及使用详解 中调用动态库和静态库的方法,把相机和电机的动态库和静态库添加到对应的位置。
之后,关于“error LNK2001: 无法解析的外部符号 _GT_XXX”的错误就消失了,还剩下相机的错误,发现Libray文件夹下有MVCAMSDK_X64.lib,在头文件中添加如下语句:
#ifdef _WIN64 #pragma comment(lib,".\\Library\\MVCAMSDK_X64.lib") #else #pragma comment(lib,".\\Library\\MVCAMSDK.lib") #endif // _WIN64X
用Debug X64 编译通过。问题解决。