C++ 使用WinInet.h下载给我错误

C++ 使用WinInet.h下载给我错误,c++,c,windows,download,wininet,C++,C,Windows,Download,Wininet,我想用WinInet.h下载,但它在我的新项目中给了我很多错误。在旧项目中,情况并非如此 这是我的密码: string DownloadString(string URL) { HINTERNET interwebs = InternetOpenA("Mozilla/5.0", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL); HINTERNET urlFile; string rtn; if (interwebs) {

我想用
WinInet.h
下载,但它在我的新项目中给了我很多错误。在旧项目中,情况并非如此

这是我的密码:

string DownloadString(string URL) {
    HINTERNET interwebs = InternetOpenA("Mozilla/5.0", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL);
    HINTERNET urlFile;
    string rtn;
    if (interwebs) {
        urlFile = InternetOpenUrlA(interwebs, URL.c_str(), NULL, NULL, NULL, NULL);
        if (urlFile) {
            char buffer[2000];
            DWORD bytesRead;
            do {
                InternetReadFile(urlFile, buffer, 2000, &bytesRead);
                rtn.append(buffer, bytesRead);
                memset(buffer, 0, 2000);
            } while (bytesRead);
            InternetCloseHandle(interwebs);
            InternetCloseHandle(urlFile);
            string p = replaceAll(rtn, "|n", "\r\n");
            return p;
        }
    }
    InternetCloseHandle(interwebs);
    string p = replaceAll(rtn, "|n", "\r\n");
    return p;

}
这是我的工作内容,包括:

#include "c_api.h"
#include <iostream>
#include <fstream>
#include "termcolor.h"
#include "xor.hpp"
#include <time.h>
#include <wininet.h>
#include <urlmon.h>
#include <Windows.h>
#include <urlmon.h>
#pragma comment(lib, "urlmon.lib")
#pragma comment(lib, "WinInet.lib")
#包括“c_api.h”
#包括
#包括
#包括“termcolor.h”
#包括“xor.hpp”
#包括
#包括
#包括
#包括
#包括
#pragma注释(lib,“urlmon.lib”)
#pragma注释(lib,“WinInet.lib”)
在这里你可以看到错误。

您必须尊重这一点,包括序列(
windows.h
wininet.h
之前):

#包括
#包括
#包括
// ...
#pragma注释(lib,“wininet.lib”)
#pragma注释(lib,“user32.lib”)

因此,您需要做的第一件事是删除代码,以缩小错误的原因。由于错误在头文件中,
#include
之后的所有代码都应该是无关的,所以请先尝试删除该代码。然后使用
#include
之前的代码,看看有什么不同。这是一项正常的编程技能,因此将其视为一个学习机会。如果玩过之后你仍然被卡住了,那么再问一次。至少你可以问一个更集中的问题。你可以尝试在包含
wininet.h
之前移动
#include
,这不是第一次在使用多个窗口标题时有帮助。我已经尝试过了,否则我不会问这里我删除了Windows。现在它只给我12个错误。其中10个来自WinInet.h,2个来自fstream.h@TizianBöhmakaL337H4x0r,方法是将include(
windows.h
before
WinInet.h
)倒置,在不包含私有头的情况下,编译代码。所以你必须检查你在你的私人标题中做了什么
#include <windows.h>
#include <strsafe.h>
#include <wininet.h>  
// ...

#pragma comment(lib, "wininet.lib")
#pragma comment(lib, "user32.lib")