c++ - 旧 .net 项目中 Unresolved external 问题

标签 c++ lnk2019

<分区>

我有一个旧项目,我现在被分配去照管。它包括 2 个 dll-s 和一个在 .net 2003 C++ 上编写的 ocx,它们在彼此和更大的应用程序之间进行通信。我需要对它们进行更改,但是当我尝试构建 ocx 时,我收到 8 个 LNK2019 Unresolved external 错误,我不知道如何修复。当我构建整个解决方案时,其中一个 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. 已从库中删除符号的更新环境
  2. 不满足对环境的依赖,即库太旧而无法包含特定符号
  3. 缺少定义这些符号的源文件
  4. 错误的构建环境(错误的链接器标志、搜索路径等)
  5. 构建错误(可能某些依赖项没有明确显示给构建系统,需要通过按特定顺序构建某些子项目来手动保留)

如果没有更多信息,几乎不可能说出问题所在。

关于c++ - 旧 .net 项目中 Unresolved external 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26259716/

相关文章:

python - 未解析的外部符号 main(无下划线)

c++ - lnk2019 visual studio错误

c++ - 链接错误 LNK1120 和 LNK2019 - "unresolved external symbol _main"

c++ - 更改私有(private)成员变量不会影响整个类

c++ - 由于#define,VS2015 找不到成员函数 [c++] 定义

c++ - 在 C++ 中,如何在不使用 new 且不单独声明单个元素的情况下创建 `std::initializer_list<base *>`?

c++ - LoadString、静态库和可执行文件

c++ - 在语义 Action 中去掉一个灵气符号

使用模板链表和指针传递的 C++ 未解析外部符号

c++ - BulletPhysics:错误 LNK2001:未解析的外部符号