对于我什至没有直接调用的方法,我在 Visual Studio 中遇到了一大堆链接器错误。我白天是一名 Java 开发人员,但我有一个需要用 C++ 完成的项目,旨在在 Windows 机器上运行。因此,我被困在 Visual Studio 上。
Bascally,我有一个 os 项目,我添加了一个访问器方法。我将该项目编译为 .lib 文件(编译和链接很好)。
然后我有自己的项目使用该库。我已将库包含在 Project->Properties -> Linker -> Input 下,并在 General -> Additional Lib Directories 中设置适当的目录。我已将标头包含在适当的文件中,我只是调用其中一个类的构造函数……甚至没有调用我创建的方法。
代码可以编译,但我得到以下大量链接器错误——主要是 LNK2019 和 LNK2001 错误。我尝试在不同的设置(lib、exe 等)下重新编译,链接器错误似乎只会成倍增加。当我切换回以前的设置时,错误数量仍处于峰值。任何想法如何解决这一问题?
构建日志
构建开始:项目:SpamCapture,配置:调试|Win32
命令行:
创建临时文件“c:\SpamCapture\SpamCapture\SpamCapture\Debug\RSP0000103081740.rsp”,内容为 [ /VERBOSE:LIB /OUT:"C:\SpamCapture\SpamCapture\SpamCapture\Debug\SpamCapture.exe" /INCREMENTAL /LIBPATH: "C:\SpamCapture\Config\Debug\" /MANIFEST /MANIFESTFILE:"Debug\SpamCapture.exe.intermediate.manifest" /NODEFAULTLIB:"libcmtd.lib" /NODEFAULTLIB:"nafxcwd.lib" /DEBUG /PDB:"c :\SpamCapture\SpamCapture\SpamCapture\Debug\SpamCapture.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 KeyCapture_Config.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32 .lib uuid.lib odbc32.lib odbccp32.lib
“.\Debug\Interaction.obj”
“.\Debug\InteractionSet.obj”
“.\Debug\LogReader.obj”
".\Debug\SpamCapture.obj"
“.\调试\stdafx.obj”
".\Debug\SpamCapture.res"
".\Debug\SpamCapture.exe.embed.manifest.res" ] 创建命令行 "link.exe @c:\SpamCapture\SpamCapture\SpamCapture\Debug\RSP0000103081740.rsp /NOLOGO /ERRORREPORT:PROMPT"
输出窗口:
正在链接... LINK:警告 LNK4067:入口点不明确;选择 'mainCRTStartup' 搜索库 搜索 C:\SpamCapture\Config\Debug\KeyCapture_Config.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\lib\kernel32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\user32.lib:搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib:搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\ lib\winspool.lib:搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib:搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib:搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shell32.lib: 搜索 C:
链接器错误从这里开始:
KeyCapture_Config.lib(KeyCapture_ConfigDlg.obj) : 错误 LNK2001: 无法解析的外部符号 "public: virtual int __thiscall CWnd::Create(char const *,char const *,unsigned long,struct tagRECT const &,class CWnd *,unsigned int,struct CCreateContext *)" (?Create@CWnd@@UAEHPBD0KABUtagRECT@@PAV1@IPAUCCreateContext@@@Z)
......更像这样的一堆
KeyCapture_Config.lib(KeyCapture_ConfigDlg.obj) : 错误 LNK2019: 无法解析的外部符号 "public: struct HICON__ * thiscall CWinApp::LoadIconA(unsigned int)const " (?LoadIconA@CWinApp@@QBEPAUHICON @@I@Z) 在函数中引用"公共:__thiscall CKeyCapture_ConfigDlg::CKeyCapture_ConfigDlg(class CWnd *)" (??0CKeyCapture_ConfigDlg@@QAE@PAVCWnd@@@Z)
......更多这样的
(?DoDataExchange@SetupDialog@@MAEXPAVCDataExchange@@@Z) C:\SpamCapture\SpamCapture\SpamCapture\Debug\SpamCapture.exe:致命错误 LNK1120:34 个未解决的外部
结果:
构建日志保存在“file://c:\SpamCapture\SpamCapture\SpamCapture\Debug\BuildLog.htm” SpamCapture - 44 个错误,1 个警告