CURL ilink32错误:未解析的外部

时间:2013-05-25 18:16:09

标签: 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
通过项目 - &gt;添加...

lib / libcurl.lib libcurl_imp 添加到项目中

如何解决此错误?

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

1 个答案:

答案 0 :(得分:0)

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

embarcadero网站在how to configure your project设置上有一个很好的页面,用于链接其他图片。




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

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