尝试使用 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, <filename>)
。您可以使用 gcc 的 -Werror=unknown-pragmas
命令行参数来验证。
您需要使用 gcc 的 -l
命令行参数链接到导入库,例如 wininet.lib
。
【讨论】:
以上是关于尝试使用 wininet 将文件上传到 FTP 时遇到问题 [Id 返回 1 退出状态]的主要内容,如果未能解决你的问题,请参考以下文章
使用 Wininet 上传文件时如何添加正确的 Content-Type? (HTTP 放置)