c++ - curl ilink32 错误 : Unresolved external

标签 c++ libcurl c++builder

我的代码:

#include <curl/curl.h>
...
CURL *curl;
CURLcode res;

curl_global_init(CURL_GLOBAL_DEFAULT);

curl = curl_easy_init();
if(curl)
{
    curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com/");

    res = curl_easy_perform(curl);
    if(res != CURLE_OK)
    {
        const char *error = curl_easy_strerror(res);
        wchar_t *errorw;
        mbtowc(errorw, error, sizeof(error));
        MessageBox(Application->Handle, L"Test", errorw, 0);
    }

    curl_easy_cleanup(curl);
}
curl_global_cleanup();
...

当我尝试使用 libcurl 编译我的程序时,出现以下错误:

[ilink32 Error] 
Error: Unresolved external 'WSAIoctl' referenced from ..\LIBCURL.LIB|easy  
... '_Curl_resolver_init' referenced from ..\LIBCURL.LIB|url  
... '_Curl_resolver_cleanup' referenced from ..\LIBCURL.LIB|url  
... '_Curl_set_dns_servers' referenced from ..\LIBCURL.LIB|url  
... '_Curl_resolver_wait_resolv' referenced from ..\LIBCURL.LIB|connect  
... '_Curl_resolver_cancel' referenced from ..\LIBCURL.LIB|url  
... '_Curl_resolver_getaddrinfo' referenced from ..\LIBCURL.LIB|hostasyn  
... '_Curl_resolver_is_resolved' referenced from ..\LIBCURL.LIB|hostip  
... '_Curl_resolver_getsock' referenced from ..\LIBCURL.LIB|multi  
... '_Curl_resolver_global_init' referenced from ..\LIBCURL.LIB|easy  
... '_Curl_resolver_global_cleanup' referenced from ..\LIBCURL.LIB|easy  
... '_Curl_resolver_duphandle' referenced from ..\LIBCURL.LIB|easy

include/curl 复制到 C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\include
lib/libcurl.liblibcurl_imp 通过 Project->Add... 添加到项目

如何修复这个错误?

编辑:
当我仅使用 libcurl_imp.lib 进行编译时,一切正常,但程序需要 libcurl.dll

最佳答案

即使您已将库复制到您的构建环境中,您也需要明确告诉它将该库链接到您的应用程序。

embarcadero网站上有一个不错的页面 how to configure your project链接其他图书馆的设置。




对于使用上述解决方案后出现的新错误,您需要进行一些额外的更改。首先,您需要链接名为 Ws2_32.lib 的 Winsock 库,以便使用 WSAIoctl。它是一个 Windows 库,因此应该已经安装在您的开发环境中。

添加该库后,您需要仔细检查 libcurl 配置以确保将正确的调用编译到库中。您将需要重建库(或下载预编译版本)以获得这些缺失的函数调用。当您构建库时,至少 USE_ARESCURLRES_ASYNCH 已添加到预处理器的预定义符号设置中。您还需要确保定义了以下附加符号。

关于c++ - curl ilink32 错误 : Unresolved external,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16752573/

相关文章:

c++ - 是否有一种技术可以让匿名结构的命名实例引用封闭类中的函数?

c - libcurl 库是否提供了任何方法来确定哪个响应头来自哪个命令?

http - 是否可以使 libcurl 压缩 http 消息的数据?

c++ - 操作队列

c++ - 使用 Blackbone 读取进程内存?

c++ - Borland/Delphi 替代 __super 关键字

c++ - 在 C++ 构建器中为单元格着色,StringGrid

delphi - TIdTCPServer 如何在 60Hz 计时器中向所有客户端多播?

c++ - 绘制彼此靠近的对象

.net - C++ 'GET' 请求或如何下载文件以在 C++ 中使用?