VS2013 VC ++ libcurl LNK2028 LNK2019链接错误

时间:2015-04-29 06:56:58

标签: visual-c++ curl visual-studio-2013 static-libraries libcurl

我正在尝试让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包文件夹内的不同目录中,因此在Linker - >下一般我的“附加图书馆目录”设置为:

"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 ++下的'其他包含目录'下正确添加了附加包含目录 - >一般:

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文件,没有数组错误编译给我,所以没有。

1 个答案:

答案 0 :(得分:0)

解决。

This Github project是一个.bat文件,它下载libcurl源代码,编译它,并创建库(静态和动态)。导入由此(libcurl_a.lib)创建的静态库并在我的项目中使用它与include目录一起工作。

如果有人可以提供其他有用的步骤来解决我在使用nuget软件包时遇到的问题,我会留下一个不可接受的答案。

最后。