互联网引起链接器错误lnk1120和lnk2001



编辑以显示与此不同的区别:

这个问题专门用于通过使用Visual Studio 2017的接口对项目进行修改来解决"未解决的外部符号"。它的目的是针对那些没有必要在常规上编写C 代码的人因此,并且不关心C 编译的工作方式的细微差别。

tl; dr - 这是为将库与VS2017接口链接的问题提供简洁的解决方案,而不会引起对未解决符号的细微差别的关注。解决方案在底部。


我正在参加恶意软件 - 逆向工程课程,以下功能调用正在为VS2017提供一些麻烦链接。

handle_t iOpenH = InternetOpen(L"Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) totally not Malware",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
0); 

错误:

Severity    Code    Description                                       Project           File                                                         
Error      LNK1120  1 unresolved externals                              fake-malware    C:UsersdarrelDocumentsschoolSpring 2018COMP 220 - Software Rev EngLab4Lab4_Win32_APIReleasefake-malware.exe   line: 1 
Error      LNK2001  unresolved external symbol __imp__InternetOpenW@20  fake-malware    C:UsersdarrelDocumentsschoolSpring 2018COMP 220 - Software Rev EngLab4Lab4_Win32_APIfake-malware.obj           line: 1

我已经清洁和重建无济于事。我该怎么办来解决上面的两个错误?


编辑2:我只是意识到,这里答案的固有含义很简单,但我以前没有意识到这种发展的经验很少,所以如果您不这样做,我会在此处陈述想要按照下面的@anders链接来解决此问题:

使用Win32 API之类的库时,您不仅必须执行标准#include <headerName.h>,而且链接器可能需要.lib对相应包含的库。在这种情况下,我们正在使用wininet。因此,如下注释中的链接中的表中所述,标题为#include <wininet.h>,链接器要求您将wininet.lib添加到链接器的其他依赖项列表中:

解决方案

project> proerties>配置属性>链接>输入>其他依赖项>将必要的.lib文件名添加到列表中。

确保您链接到wininet.lib。

将其添加到您的项目设置中或将#pragma comment(lib,"Wininet.lib")添加到您的一个源文件之一。

最新更新