旧.net项目中未解决的外部项
unresolved externals in old .net project
我现在有一个旧项目要负责。它包括两个dll-s和一个在.net 2003 C++上编写的ocx,它们可以在彼此和更大的应用程序之间进行通信。我需要对它们进行更改,但当我尝试构建ocx时,我得到了8个LNK2019未解决的外部错误,我不知道如何修复这些错误。当我构建整个解决方案时,其中一个dll-s也有这些LNK2019错误,但它仍然生成.dll。据我所知,自上一次上一个人成功构建以来,这些项目没有改变。我不认为代码或项目设置有任何问题。我使用的是带有windowsxp的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
...DLLImpDplanX.ocx : fatal error LNK1120: 8 unresolved externals
我阅读了建议的解决方案,但不明白如何从列出的所有可能的解决方案中确定真正的原因。或者如何修复。
链接器错误可能有多种原因:
- 已更新从库中删除符号的环境
- 对环境的依赖性不满意,即库太旧,无法包含特定的符号
- 缺少定义这些符号的源文件
- 错误的构建环境(错误的链接器标志、搜索路径等)
- 构建是错误的(可能有些依赖关系没有明确到构建系统,需要通过按特定顺序构建某些子项目来手动保留)
如果没有进一步的信息,几乎不可能说出问题所在。
相关文章:
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 节俭并发:未解决的外部问题
- 未解决的外部链接问题
- Visual Studio 2017 中的 QtMetaObject 未解决的外部错误
- 在Embarcadero C++ Builder中生成的DLL未解决的外部链接错误
- 解释未解决的外部C++
- 矛盾的未解决的外部符号+未使用的库与VS2017和FFMPEG 4
- 函数路径追加上未解决的外部符号错误
- Lapack函数DGTSV通过C /Visual Studio提供未解决的外部符号
- 运算符过载上未解决的外部符号
- qfilesystemwatcher未解决的外部
- C 未解决的外部符号(公共静态INT)
- MIDL COM库中未解决的外部符号
- 未解决的外部符号sf ::带有SFML的时间
- C++编译错误LNK2019:未解决的外部符号错误
- VTK / ITK/ QT - 未解决的外部符号错误 (LNK2001)
- 未解决的外部包括AUX_KLIB内核库
- 错误LNK1120:未解决的外部
- QT创建者:简单程序未解决的外部符号和外部符号错误
- 编译示例 Cinder 项目时存在大量未解决的外部问题