之前程序是用64位做的,现在切换到了32位,重新配置头文件和库文件以后还是无法运行。Error提示:无法解析的外部符号,文件位置是obj。如图:
我根据提示信息找到代码中的引用
BOOL CHIKVISION::DoLogin()
{
NET_DVR_DEVICEINFO_V30 DeviceInfoTmp;
memset(&DeviceInfoTmp, 0, sizeof(NET_DVR_DEVICEINFO_V30));
LONG lLoginID = NET_DVR_Login_V30("192.168.127.14", 8000, \
"admin", "admin12345", &DeviceInfoTmp);
if (lLoginID == -1)
{
AfxMessageBox(_T("Login to Device failed!\n"));
return FALSE;
}
m_struDeviceInfo.lLoginID = lLoginID;
m_struDeviceInfo.iDeviceChanNum = DeviceInfoTmp.byChanNum;
m_struDeviceInfo.iIPChanNum = DeviceInfoTmp.byIPChanNum;
m_struDeviceInfo.iStartChan = DeviceInfoTmp.byStartChan;
m_struDeviceInfo.iIPStartChan = DeviceInfoTmp.byStartDChan;
return TRUE;
}
发现我的代码与错误提示有略微区别,不知道为什么多出了_imp_的前缀和@4的后缀。
遇到这种问题,应该如何解决
你好,
你这里的问题在于使用了 64bit 来进行链接。 如果需要生成在32bit平台使用的程序,你需要找第三方取得对应的 32bit 版本的库文件
(静态库 .lib 文件/ 动态库 .dll 文件) 以及对应的 .h 文件,来进行后续开发。
这里的 _imp_
是 msvc 根据 Win32 要求进行的正常函数名变形,无需担心。
具体有关这里的一些信息可以参考 https://docs.microsoft.com/zh-cn/cpp/build/walkthrough-creating-and-using-a-static-library-cpp?view=vs-2019#UseLibInApp