【问题标题】:C++ unresolved externals [duplicate]C ++未解决的外部[重复]
【发布时间】:2023-12-29 20:41:01
【问题描述】:

有人知道这是什么意思吗?

1>  Generating Code...
1>BlankWindowDXbaseImpl.obj : error LNK2019: unresolved external symbol "public: __thiscall DXBase::DXBase(void)" (??0DXBase@@QAE@XZ) referenced in function "public: __thiscall BlankWindowDXBaseImpl::BlankWindowDXBaseImpl(void)" (??0BlankWindowDXBaseImpl@@QAE@XZ)
1>BlankWindowDXbaseImpl.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall DXBase::~DXBase(void)" (??1DXBase@@UAE@XZ) referenced in function "public: virtual __thiscall BlankWindowDXBaseImpl::~BlankWindowDXBaseImpl(void)" (??1BlankWindowDXBaseImpl@@UAE@XZ)
1>main.obj : error LNK2019: unresolved external symbol "public: void __thiscall DXBase::shutdown(void)" (?shutdown@DXBase@@QAEXXZ) referenced in function _wWinMain@16
1>main.obj : error LNK2019: unresolved external symbol "public: bool __thiscall DXBase::initalize(struct HINSTANCE__ *,struct HWND__ *)" (?initalize@DXBase@@QAE_NPAUHINSTANCE__@@PAUHWND__@@@Z) referenced in function _wWinMain@16
1>C:\backup\development\directXworkspace\BlankWindow\Debug\BlankWindow.exe : fatal error LNK1120: 4 unresolved externals

【问题讨论】:

    标签: c++ c


    【解决方案1】:

    表示你有未解析的外部符号。

    什么是符号? 符号可以是变量、类、成员函数或函数中的任何内容。

    为什么它们没有被解析?您的代码(或您正在使用的库)的某些部分依赖于这些符号,并且由于您没有链接正确的库或实现它们而找不到它们。

    【讨论】:

    • 您当然是对的,链接器找不到正确的库。但是,在 VS2010 中,我将库路径设置为包含所需库的路径。它只是找不到它。我只是受够了,将类和标头移到同一个项目中,所以它在本地查找库。
    • 显然你做得不对,因为这是正常的事情。冒着被光顾的风险,您需要 1)将库目录添加到“常规/附加库目录”2)将库本身添加到“输入/附加依赖项”3)在引用时不要忘记 .lib第 2 步中的库。
    【解决方案2】:

    是的,这意味着您的程序调用了已声明但没有主体的函数。

    您希望这些函数成为您代码的一部分,还是由某个库提供?

    【讨论】:

    • 简单,直截了当。让我立即发现了我的错误!
    【解决方案3】:

    这意味着你有一个链接器问题。 (链接器找不到包含这些符号的库)您需要在库路径中包含所需的库。

    【讨论】:

      【解决方案4】:

      可能您没有链接到正确的库。

      但是您应该提供更多详细信息.. 看起来您是在问答比赛中提问。

      【讨论】:

        【解决方案5】:

        我刚刚遇到了同样的问题,如果您添加#pragma comment(lib,"d3d9.lib") 这将包括编译代码所需的库文件。只是混淆了哪个 lib 文件来获取 64 位或 32 位。希望这会有所帮助。

        【讨论】:

          【解决方案6】:

          我正在分享一个难以检测到的刚刚面临的问题:如果您要链接到位于不同库路径(/PathToA//PathToB/)中的两个库(a.libb.lib),则问题如果存在旧版本,例如路径/PathToA/ 中的b.lib,则可能会出现未解决的外部问题。

          在这种情况下,您可能会错误地链接到不需要的库。因此,作为这个特定多链接问题的解决方案,请确保您的库路径中没有多个版本的库。

          【讨论】: