【发布时间】:2008-10-27 18:06:52
【问题描述】:
对于我什至不直接调用的方法,我在 Visual Studio 中遇到了一大堆链接器错误。我白天是一名 Java 开发人员,但我有一个需要用 C++ 完成的项目,旨在在 Windows 机器上运行。因此,我被困在 Visual Studio 上。
Bascally,我有一个操作系统项目,我添加了一个访问器方法。我将该项目编译为 .lib 文件(编译和链接很好)。
然后我有自己的项目使用该库。我已将库包含在 Project->Properties -> Linker -> Input 下,并在 General -> Additional Lib Directories 中设置适当的目录。我已将标头包含在适当的文件中,我只是调用其中一个类的构造函数……甚至没有调用我创建的方法。
代码可以编译,但我得到以下大量链接器错误——主要是 LNK2019 和 LNK2001 错误。我尝试在不同的设置(lib、exe 等)下重新编译,链接器错误似乎只会成倍增加。当我切换回以前的设置时,错误数量仍处于峰值。任何想法如何解决这个问题?
构建日志
构建开始:项目:SpamCapture,配置:Debug|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"
".\Debug\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:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\lib\uuid.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbc32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbccp32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\lib\msvcprtd.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\lib\MSVCRTD.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfc80ud.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfcs80ud.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\msimg32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comctl32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shlwapi.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\atlsd.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\wininet.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ws2_32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\mswsock.lib: 搜索 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:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\lib\uuid.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbc32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbccp32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\lib\msvcprtd.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\lib\MSVCRTD.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfc80ud.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfcs80ud.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\msimg32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comctl32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shlwapi.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\atlsd.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\wininet.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ws2_32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\mswsock.lib: 搜索 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:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\lib\uuid.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbc32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbccp32.lib: 搜索 C:\Program Files\Microsoft Visual Studio 8\VC\lib\msvcprtd.lib: 完成搜索库
链接器错误从这里开始:
KeyCapture_Config.lib(KeyCapture_ConfigDlg.obj) : 错误 LNK2001: unresolved external 符号“公共:虚拟 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) 在函数“public: __thiscall”中引用 CKeyCapture_ConfigDlg::CKeyCapture_ConfigDlg(类 CWnd *)" (??0CKeyCapture_ConfigDlg@@QAE@PAVCWnd@@@Z)
...更多类似的
(?DoDataExchange@SetupDialog@@MAEXPAVCDataExchange@@@Z) C:\SpamCapture\SpamCapture\SpamCapture\Debug\SpamCapture.exe : 致命错误 LNK1120: 34 unresolved externals
结果:
构建日志保存在“file://c:\SpamCapture\SpamCapture\SpamCapture\Debug\BuildLog.htm” SpamCapture - 44 个错误,1 个警告
【问题讨论】:
标签: c++ visual-studio-2005 linker visual-c++-2005