【发布时间】: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