我在Visual Studio中遇到了一大堆链接器错误,我甚至没有直接调用这些方法.我白天是一名java开发人员,但我有一个我需要用C++做的项目,打算在Windows机器上运行.因此,我在使用Visual Studio时陷入困境.
基本上,我有一个os项目,我添加了一个访问器方法.我将该项目编译为.lib文件(编译和链接正常).
然后我有自己的项目使用该lib.我在Project-> Properties - > Linker - > Input下包含了库,并在General - > Additional Lib Directories中设置了相应的目录.我已经在相应的文件中包含了标题,我只是调用其中一个类的构造函数...甚至没有调用我创建的方法.
代码编译,但我得到以下大量的链接器错误 - 主要是LNK2019和LNK2001错误.我尝试在不同的设置(lib,exe等)下重新编译,并且链接器错误似乎只是相乘.当我切换回之前的设置时,错误的数量仍保持在最高点.任何想法如何解决这一问题?
构建日志
Build build:Project:SpamCapture,Configuration: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
"\调试\ Interaction.obj"
"\调试\ InteractionSet.obj"
"\调试\ LogReader.obj"
"\调试\ SpamCapture.obj"
"\调试\ StdAfx.obj的"
"\调试\ SpamCapture.res"
".\ Debug\SpamCapture.exe.embed.manifest.res"]创建命令行"link.exe @c:\ SpamCapture\SpamCapture\SpamCapture\Debug\RSP0000103081740.rsp/NOLOGO/ERRORREPORT:PROMPT"
输出窗口:
链接...链接:警告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*)"(?创建@ 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(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个警告
ChrisN.. 5
该库KeyCapture_Config.lib
正在使用MFC GUI类(CWnd
,CWinApp
等),但是您将其链接到的应用程序是一个控制台应用程序(请参阅/SUBSYSTEM:CONSOLE
链接器命令行中的选项).这不行.您应该创建一个新的MFC GUI应用程序项目并将库添加到该项目.
编辑:我刚刚检查了你评论中的链接:http://dynamicnetservices.com/~will/academic/textinput/keycapture/似乎KeyCapture_Config实际上是一个使用KeyCapture DLL的MFC对话框应用程序.可以通过直接链接在控制台应用程序中使用KeyCapture KeyCapture.lib
.
该库KeyCapture_Config.lib
正在使用MFC GUI类(CWnd
,CWinApp
等),但是您将其链接到的应用程序是一个控制台应用程序(请参阅/SUBSYSTEM:CONSOLE
链接器命令行中的选项).这不行.您应该创建一个新的MFC GUI应用程序项目并将库添加到该项目.
编辑:我刚刚检查了你评论中的链接:http://dynamicnetservices.com/~will/academic/textinput/keycapture/似乎KeyCapture_Config实际上是一个使用KeyCapture DLL的MFC对话框应用程序.可以通过直接链接在控制台应用程序中使用KeyCapture KeyCapture.lib
.