【发布时间】:2015-07-08 07:20:53
【问题描述】:
我正在尝试让 Libcurl 在我的 VS2013 社区的 VC++ 项目中工作。我已经为此辛勤工作了好几个小时,基本上我在 Stack 和 Google 上尝试了所有关于它的方法,但无济于事。
我最近的尝试是由this 回答引发的,其中提到 libcurl 作为 Nuget 包。这很好,因为它附带了所有所需的 .lib 文件。但是,我遇到了与 this fellow 相同的问题,因为我遇到了链接器错误。
我在链接器 -> 输入下的项目配置设置中将以下库作为“附加依赖项”导入:
libcurl.lib;libeay32.lib;ssleay32.lib;Ws2_32.lib;libssh2.lib;zlib.lib;wldap32.lib;
显然,这些 .lib 文件中的每一个都位于项目文件夹内的 nuget 包文件夹内的不同目录中,因此在链接器 -> 常规下,我的“附加库目录”设置为:
"PATHTOPROJECT\packages\curl.7.30.0.2\build\native\lib\v110\x64\Release\static";
"PATHTOPROJECT\packages\zlib.1.2.8.1\build\native\lib\v110\Win32\Release\static\cdecl";
"PATHTOPROJECT\packages\openssl.1.0.1.21\build\native\lib\v110\x64\Release\static\cdecl";
"PATHTOPROJECT\packages\libssh2.1.4.3.1\build\native\lib\v110\x64\Release\static\cdecl";
我正在尝试使用静态库,因为如果可以避免的话,我不想将 .dll 与我的项目可执行文件一起拖动。还值得注意的是,我最近使用 libcurl 的尝试还包括 SSL 和诸如此类的东西,但我实际上并不需要那些额外的东西。真的,我只需要一个静态 libcurl 库,但似乎找不到或无法编译。
在我的代码中,我也使用了这个包括:#include "curl/curl.h"
我还在 C/C++ -> General 下的“Additional Include Directories”下正确添加了 Additional Include 目录:
PROJECTPATH\packages\curl.7.30.0.2\build\native\include
现在,只要我不尝试在项目代码中使用 curl,这一切都可以正常编译。
所以,当我尝试在代码中使用 curl 时的错误:
CURL *curl;
curl = curl_easy_init();
那段代码会产生这些错误:
1>Main.obj : error LNK2028: unresolved token (0A000453) "extern "C" void * __cdecl curl_easy_init(void)" (?curl_easy_init@@$$J0YAPAXXZ) referenced in function "private: class System::String ^ __clrcall Project::Main::CurlRequest(class System::String ^,class System::String ^,class System::String ^,class System::String ^)" (?CurlRequest@Main@Project@@$$FA$AAMP$AAVString@System@@P$AAV34@000@Z)
1>Main.obj : error LNK2019: unresolved external symbol "extern "C" void * __cdecl curl_easy_init(void)" (?curl_easy_init@@$$J0YAPAXXZ) referenced in function "private: class System::String ^ __clrcall Project::Main::CurlRequest(class System::String ^,class System::String ^,class System::String ^,class System::String ^)" (?CurlRequest@Main@Project@@$$FA$AAMP$AAVString@System@@P$AAV34@000@Z)
我的 curl 使用代码当然还有更多内容,但最低限度显示了链接错误的基础知识。我能做些什么来解决这个问题?正如我之前提到的,我尝试了一系列解决方案,其中一些我将在下面列出:
许多关于在 VS 项目中使用 libcurl 的问题的答案都提到从 http://curl.haxx.se/latest.cgi?curl=win32-devel-msvc 下载 libcurl,但该链接目前不起作用,所以我无法使用它。
更多答案说只从源代码编译 libcurl。源代码带有 .vcproj 文件,没有一个可以为我编译而不会出现数百个错误,所以就这样了。
【问题讨论】:
标签: visual-c++ curl visual-studio-2013 static-libraries libcurl