尝试使用 wininet 将文件上传到 FTP 时遇到问题 [Id 返回 1 退出状态]

Posted

技术标签:

【中文标题】尝试使用 wininet 将文件上传到 FTP 时遇到问题 [Id 返回 1 退出状态]【英文标题】:Trouble attempting to upload file to FTP using wininet [Id returned 1 exit status] 【发布时间】:2021-05-26 21:39:31 【问题描述】:

我从另一篇文章中获得了这段代码,但在尝试编译时显示以下错误:

这是代码:

#include <iostream>
#include <wininet.h>
#pragma comment(lib, "Wininet")

int main() 
    HINTERNET hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    HINTERNET hFtpSession = InternetConnect(hInternet, "host", INTERNET_DEFAULT_FTP_PORT, "user", "passwd", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
    FtpPutFile(hFtpSession, "D:\\test.txt", "\\test.txt", FTP_TRANSFER_TYPE_BINARY, 0);
    std::cout << "File Uploaded." << std::endl;
    InternetCloseHandle(hFtpSession);
    InternetCloseHandle(hInternet);
    return 0;

我使用的是 Windows 7 x86 和 gcc 10.3。

【问题讨论】:

看起来您缺少一些库,因此找不到符号。我对 windows cpp 编译不是很熟悉,所以这是一个猜测,但是你有没有告诉你的编译器在哪里寻找 wininet(除非它是一个标准库)? 【参考方案1】:

gcc 不支持#pragma comment(lib, &lt;filename&gt;)。您可以使用 gcc 的 -Werror=unknown-pragmas 命令行参数来验证。

您需要使用 gcc 的 -l 命令行参数链接到导入库,例如 wininet.lib

【讨论】:

以上是关于尝试使用 wininet 将文件上传到 FTP 时遇到问题 [Id 返回 1 退出状态]的主要内容,如果未能解决你的问题,请参考以下文章

wininet ftp程序遇到seg错误

c ++ wininet ftp列出许多文件错误

在delphi上使用WININET上传文件

使用 Wininet 上传文件时如何添加正确的 Content-Type? (HTTP 放置)

FTP 异步操作上的 ERROR_IO_PENDING [Wininet C++]

使用 wininet.dll api 从 FTP 站点搜索和检索文件名