c++ - 为什么 C++ WinInet 函数无法解析外部符号?

标签 c++

我是一个被迫做一些 C++ 的 Java 程序员。什么样的恶梦!我正在尝试向这样的 Web 服务发送 POST 请求:

#include <Windows.h>
#include <tchar.h>
#include <WinInet.h>

    static TCHAR hdrs[] = _T("Content-Type: application/x-www-form-urlencoded");
    static TCHAR frmdata[] = _T("id=01&message=test_message");
    static LPCSTR accept[2] = { "*/*", NULL };
    static LPCWSTR tag = L"MyAgent";
    static LPCWSTR requestType = L"POST";

// for clarity, error-checking has been removed
HINTERNET hSession = InternetOpen(tag, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
HINTERNET hConnect = InternetConnect(hSession, _T("desktop-60nl2pl:9998"), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
HINTERNET hRequest = HttpOpenRequest(hConnect, requestType, _T("/GUser/login"), NULL, NULL, (LPCWSTR*)accept, 0, 1);
HttpSendRequest(hRequest, hdrs, strlen((char*)hdrs), frmdata, strlen((char*)frmdata));

该代码基于此帖子: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/dc74e7bf-3ac9-41a0-b1c7-ece14a76a906/send-post-request-to-simple-php-page-using-wininet?forum=vcgeneral

它编译但不链接。获取一堆这些“未解析的外部符号 _imp_InternetOpenW 在函数中引用”class std::vector

抱歉,如果这是一个新手问题,但我无法理解我读到的关于链接器错误的所有官方文章。谁能简单解释一下?

最佳答案

您正在引用诸如 InternetOpen 之类的函数,但它们未在您的代码中定义。必须链接到您的代码的实时 Win32 库。在这种情况下,所有 InternetXXXX 函数都位于 WinInet.lib 静态库和 WinInet.dll 动态链接库中。您必须链接到 WinINet.lib 才能编译您的程序。

关于c++ - 为什么 C++ WinInet 函数无法解析外部符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49289998/

相关文章:

c++ - 如何在文件中保存/读取数据数组 (C++)

c++ - 对于构造函数,我如何在可变参数模板与 std::initializer_list 之间进行选择?

c++ - 在 while 循环中使用 std::condition_variable::wait 是否正确?

c++ - POD成员默认初始化不带大括号

c++ - 内部静态和捕获的可变之间的 Lambda 状态行为差异

c++ - A类在C类中不可见,但在main中可见。为什么?

c++ - 初始化 C++ 映射时出错

c++ - 为什么在调用构造函数后会崩溃?我正在尝试将shared_ptr推回 vector

php - 错误的 ELF 类 - PHP 扩展

c++ - 我可以 Hook "Ctrl+Alt+Del"的返回值吗?