我是一个被迫做一些 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));
它编译但不链接。获取一堆这些“未解析的外部符号 _imp_InternetOpenW 在函数中引用”class std::vector
抱歉,如果这是一个新手问题,但我无法理解我读到的关于链接器错误的所有官方文章。谁能简单解释一下?
最佳答案
您正在引用诸如 InternetOpen 之类的函数,但它们未在您的代码中定义。必须链接到您的代码的实时 Win32 库。在这种情况下,所有 InternetXXXX 函数都位于 WinInet.lib 静态库和 WinInet.dll 动态链接库中。您必须链接到 WinINet.lib 才能编译您的程序。
关于c++ - 为什么 C++ WinInet 函数无法解析外部符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49289998/