旧的.net项目中未解决的外部问题

时间:2014-10-08 14:40:31

标签: c++ lnk2019

我有这个旧项目,我现在被指派照顾。它包括2个dll-s和一个用.net 2003 C ++编写的ocx,它们之间相互通信,并且有更大的应用程序。我需要对它们进行更改但是当我尝试构建ocx时,我得到8个LNK2019未解决的外部错误,我不知道如何解决。当我构建整个解决方案时,其中一个dll-s也会出现这些LNK2019错误,但它仍会产生.dll。据我所知,自上一次成功建造项目以来,项目没有改变。我不认为代码或项目设置有任何问题。我正在使用带有windows xp的oracle虚拟机来运行.net 2003。

错误输出:

mfcs42.lib(dllmodul.obj) : error LNK2019: unresolved external symbol "public: __thiscall AFX_MODULE_STATE::AFX_MODULE_STATE(int,long (__stdcall*)(struct HWND__ *,unsigned int,unsigned int,long),unsigned long)" (??0AFX_MODULE_STATE@@QAE@HP6GJPAUHWND__@@IIJ@ZK@Z) referenced in function "public: __thiscall _AFX_DLL_MODULE_STATE::_AFX_DLL_MODULE_STATE(void)" (??0_AFX_DLL_MODULE_STATE@@QAE@XZ)
mfcs42.lib(dllmodul.obj) : error LNK2019: unresolved external symbol "public: __thiscall AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(class AFX_MODULE_STATE *)" (??0AFX_MAINTAIN_STATE2@@QAE@PAVAFX_MODULE_STATE@@@Z) referenced in function "long __stdcall AfxWndProcDllStatic(struct HWND__ *,unsigned int,unsigned int,long)" (?AfxWndProcDllStatic@@YGJPAUHWND__@@IIJ@Z)
mfcs42.lib(oleexp.obj) : error LNK2001: unresolved external symbol "public: __thiscall AFX_MAINTAIN_STATE2::AFX_MAINTAIN_STATE2(class AFX_MODULE_STATE *)" (??0AFX_MAINTAIN_STATE2@@QAE@PAVAFX_MODULE_STATE@@@Z)
mfcs42.lib(dllmodul.obj) : error LNK2019: unresolved external symbol "void __stdcall AfxTermExtensionModule(struct AFX_EXTENSION_MODULE &,int)" (?AfxTermExtensionModule@@YGXAAUAFX_EXTENSION_MODULE@@H@Z) referenced in function _DllMain@12
mfcs42.lib(dllmodul.obj) : error LNK2019: unresolved external symbol "class AFX_MODULE_STATE * __stdcall AfxSetModuleState(class AFX_MODULE_STATE *)" (?AfxSetModuleState@@YGPAVAFX_MODULE_STATE@@PAV1@@Z) referenced in function _DllMain@12
mfcs42.lib(dllmodul.obj) : error LNK2019: unresolved external symbol "public: __thiscall CDynLinkLibrary::CDynLinkLibrary(struct AFX_EXTENSION_MODULE &,int)" (??0CDynLinkLibrary@@QAE@AAUAFX_EXTENSION_MODULE@@H@Z) referenced in function _DllMain@12
mfcs42.lib(dllmodul.obj) : error LNK2019: unresolved external symbol "int __stdcall AfxInitExtensionModule(struct AFX_EXTENSION_MODULE &,struct HINSTANCE__ *)" (?AfxInitExtensionModule@@YGHAAUAFX_EXTENSION_MODULE@@PAUHINSTANCE__@@@Z) referenced in function _DllMain@12
mfcs42.lib(dllmodul.obj) : error LNK2019: unresolved external symbol "void __stdcall AfxCoreInitModule(void)" (?AfxCoreInitModule@@YGXXZ) referenced in function _DllMain@12
libcmt.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function _mainCRTStartup
.\..\DLL\ImpDplanX.ocx : fatal error LNK1120: 8 unresolved externals

我阅读了提议的解决方案,但不明白如何确定列出的所有可能原因的真正原因。或者如何解决它。

1 个答案:

答案 0 :(得分:1)

链接器错误可能有多种原因:

  1. 更新了从库中删除符号的环境
  2. 对环境的不满意,即图书馆太旧而无法包含特定符号
  3. 缺少定义这些符号的源文件
  4. 错误的构建环境(错误的链接器标记,搜索路径等)
  5. 构建错误(可能某些依赖项未对构建系统明确,需要通过按特定顺序构建某些子项目来手动保留)
  6. 如果没有进一步的信息,几乎不可能说出问题所在。