编辑以显示与此不同的区别:
这个问题专门用于通过使用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")
添加到您的一个源文件之一。