最经一个项目从VC6.0转为VS2005,出现了许多warinings和errors,大部分已经改过来。但是在编译中出现以下错误,始终难以解决,求帮助。
1>正在编译资源清单...
1>正在链接...
1>MainFrm.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: static struct CRuntimeClass * __stdcall CCJFrameWnd::GetThisClass(void)" (__imp_?GetThisClass@CCJFrameWnd@@SGPAUCRuntimeClass@@XZ),该符号在函数 "protected: static struct CRuntimeClass * __stdcall CMainFrame::_GetBaseClass(void)" (?_GetBaseClass@CMainFrame@@KGPAUCRuntimeClass@@XZ) 中被引用
1>MainFrm.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) protected: static struct AFX_MSGMAP const * __stdcall CCJFrameWnd::GetThisMessageMap(void)" (__imp_?GetThisMessageMap@CCJFrameWnd@@KGPBUAFX_MSGMAP@@XZ),该符号在函数 "protected: static struct AFX_MSGMAP const * __stdcall CMainFrame::GetThisMessageMap(void)" (?GetThisMessageMap@CMainFrame@@KGPBUAFX_MSGMAP@@XZ) 中被引用
1>Debug/ATEStudio.exe : fatal error LNK1120: 2 个无法解析的外部命令
1>正在创建浏览信息文件...
看看你的项目是不是选择了在静态或动态中使用MFC。
谢谢您的回答,我查看了项目属性,MFC使用的共享方式,我把它改为静态使用,少了第一个链接错误,然而第二个链接错误依然存在。需要说明的是项目原是在VC6.0下基于MFC的。希望给进一步解答。再次感谢!
@贝贝1280: MFC的转换并不一定会出错,共享方式并没有错,只是部署的时候可能会有问题。看你给出的错误提示是很常见,你应该尝试找到你的代码中申明 CCJFrameWnd::GetThisClass 此方法的语句。你可以清理解决方案,重新编译一次,试试。KGPAUCRuntimeClass和KGPBUAFX_MSGMAP在引起此错误上有最大的嫌疑。
@程序猿.码农: 再次感谢您的耐心回答。我清理解决方案成功后,重新生成解决方案,依然有同样的错误。另外,“KGPAUCRuntimeClass和KGPBUAFX_MSGMAP在引起此错误上有最大的嫌疑”是什么意思,我该如何解决?
@贝贝1280: 比如你采用了静态连接的方式使用了SGPAUCRuntimeClass类,但是你没有添加链接库引用。
@程序猿.码农: 谢谢你的回答,可是我还是不知道如何改正现有的错误。谢谢
@贝贝1280: 那你只能把你的项目发给我,我帮你改了。这种连接器错误的问题,其实很简单,你引用了某个方法,类,但是找不到实现该方法,类的代码。
@程序猿.码农: 谢谢您的热情帮助,我需要向上级汇报。