【问题标题】:Why can't visual studio find my header file? [duplicate]为什么 Visual Studio 找不到我的头文件? [复制]
【发布时间】:2021-04-23 09:16:27
【问题描述】:

我有一个 VS 项目(使用 2019 社区版),它只是 c++ 中的“hello world”,其中包含另一个标头(未使用)。 无论我尝试什么,编译器都找不到头文件。头文件与 .sln 和“source.cpp”文件位于同一目录中,我尝试使用尖括号和纯引号,它表示“header.hpp”文件包含在项目中,但我仍然出现以下错误(当我按下构建时):

1>Source.obj : error LNK2001: unresolved external symbol _closesocket@4
1>C:\Users\hidden-r3d\source\repos\requests\Debug\requests.exe : fatal error LNK1120: 1 unresolved externals
1>Done building project "requests.vcxproj" -- FAILED.

我的代码如下:

#include <iostream>
#include "header.hpp"


int main()
{
    std::cout << "Hello World!\n";
    return 0;
}

【问题讨论】:

  • 错误信息与查找标头无关。这是一个链接器错误。您错过了指向Ws2_32.lib 的链接,这对于当前的代码示例来说非常奇怪。我的这个答案可以在 Visual Studio 中解决这个问题:https://stackoverflow.com/a/16948470/487892
  • 你需要将你的应用链接到一个名为Ws2_32的库
  • requests.exe 那是真的你给你的简单地狱示例项目的名字吗?看起来有些……不对劲。
  • @WhozCraig 我原本打算使用我找到的 requests c++ 模块进行测试,但现在我正在使用同一个项目来诊断这个问题。
  • 源代码库中的某处是使用closesocket 的Source.cpp,在链接时未解决(因为缺少必要的库)。这与您部分发布的代码完全无关,并且在项目中捎带仅在 lord-only-knows-what 状态不会有帮助。从一个带有 one 文件的干净项目开始。 (这个源文件没有header.hpp 包含)。然后将标头添加到项目中,然后将标头包含在此源文件中。当 中断时,您可能有一个有效的minimal reproducible example,您可以完整发布,我们可以查看。

标签: c++ visual-studio visual-studio-2019


【解决方案1】:

问题是您没有链接到 Ws2_32.lib 库。要解决此问题,您可以将其添加到项目的链接器/输入设置的附加依赖项选项卡中。或者(正如 SChepurin 在 cmets 中指出的那样)您可以添加

#pragma comment(lib, "Ws2_32.lib")

到您项目的源文件。

(来自@drescherjm 在问题的cmets 中提到的https://stackoverflow.com/a/16948470/487892。)

【讨论】:

    猜你喜欢
    • 2011-06-24
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多