gpt4 book ai didi

c++ - 链接器错误 C++ Visual Studio 2005

转载 作者:行者123 更新时间:2023-12-02 00:37:54 25 4
gpt4 key购买 nike

对于我什至没有直接调用的方法,我在 Visual Studio 中收到一大堆链接器错误。我白天是一名 Java 开发人员,但我有一个需要用 C++ 完成的项目,旨在在 Windows 计算机上运行。因此,我一直在使用 Visual Studio。

基本上,我有一个操作系统项目,我添加了一个访问器方法。我将该项目编译为 .lib 文件(编译和链接正常)。

然后我就有了使用该库的自己的项目。我已将库包含在“项目”->“属性”->“链接器”->“输入”下,并在“常规”->“附加库目录”中设置适当的目录。我已将 header 包含在适当的文件中,并且只是调用其中一个类的构造函数...甚至没有调用我创建的方法。

代码可以编译,但我收到以下大量链接器错误 - 主要是 LNK2019 和 LNK2001 错误。我尝试在不同的设置(lib、exe 等)下重新编译,链接器错误似乎只会成倍增加。当我切换回之前的设置时,错误数量仍保持在峰值。有什么想法可以解决这个问题吗?

构建日志

Build started: Project: SpamCapture, Configuration: Debug|Win32

命令行:

Creating temporary file "c:\SpamCapture\SpamCapture\SpamCapture\Debug\RSP0000103081740.rsp" with contents [ /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" ] Creating command line "link.exe @c:\SpamCapture\SpamCapture\SpamCapture\Debug\RSP0000103081740.rsp /NOLOGO /ERRORREPORT:PROMPT"

输出窗口:

Linking... LINK : warning LNK4067: ambiguous entry point; selected 'mainCRTStartup' Searching libraries Searching C:\SpamCapture\Config\Debug\KeyCapture_Config.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\kernel32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\user32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winspool.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shell32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\uuid.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbc32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbccp32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\msvcprtd.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\MSVCRTD.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfc80ud.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfcs80ud.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\msimg32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comctl32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shlwapi.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\atlsd.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\wininet.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ws2_32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\mswsock.lib: Searching C:\SpamCapture\Config\Debug\KeyCapture_Config.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\kernel32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\user32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winspool.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shell32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\uuid.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbc32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbccp32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\msvcprtd.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\MSVCRTD.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\OLDNAMES.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfc80ud.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfcs80ud.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\msimg32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comctl32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shlwapi.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\atlsd.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\wininet.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ws2_32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\mswsock.lib: Searching C:\SpamCapture\Config\Debug\KeyCapture_Config.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\kernel32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\user32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\gdi32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\winspool.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\comdlg32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\advapi32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\shell32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\ole32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\oleaut32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\uuid.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbc32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib\odbccp32.lib: Searching C:\Program Files\Microsoft Visual Studio 8\VC\lib\msvcprtd.lib: Finished searching libraries

链接器错误从这里开始:

KeyCapture_Config.lib(KeyCapture_ConfigDlg.obj) : error LNK2001: unresolved external symbol "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) : error LNK2019: unresolved external symbol "public: struct HICON__ * thiscall CWinApp::LoadIconA(unsigned int)const " (?LoadIconA@CWinApp@@QBEPAUHICON@@I@Z) referenced in function "public: __thiscall CKeyCapture_ConfigDlg::CKeyCapture_ConfigDlg(class CWnd *)" (??0CKeyCapture_ConfigDlg@@QAE@PAVCWnd@@@Z)

...还有很多这样的

(?DoDataExchange@SetupDialog@@MAEXPAVCDataExchange@@@Z) C:\SpamCapture\SpamCapture\SpamCapture\Debug\SpamCapture.exe : fatal error LNK1120: 34 unresolved externals

结果:

Build log was saved at "file://c:\SpamCapture\SpamCapture\SpamCapture\Debug\BuildLog.htm" SpamCapture - 44 error(s), 1 warning(s)

最佳答案

KeyCapture_Config.lib正在使用MFC GUI类(CWndCWinApp等),但是您链接它的应用程序into 是一个控制台应用程序(请参阅链接器命令行中的 /SUBSYSTEM:CONSOLE 选项)。这行不通。您应该创建一个新的 MFC GUI 应用程序项目并将库添加到该项目。

编辑:我刚刚检查了您评论中的链接:http://dynamicnetservices.com/~will/academic/textinput/keycapture/看起来KeyCapture_Config实际上是一个使用KeyCapture DLL的MFC对话框应用程序。通过直接链接到KeyCapture.lib,可以在控制台应用程序中使用KeyCapture。

关于c++ - 链接器错误 C++ Visual Studio 2005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/240887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com