当前位置:  开发笔记 > 编程语言 > 正文

链接器错误C++ Visual Studio 2005

如何解决《链接器错误C++VisualStudio2005》经验,为你挑选了1个好方法。

我在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.



1> ChrisN..:

该库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.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有