VS2013 VC++libcurl LNK2028 LNK2019链接错误



我正试图让Libcurl在VS2013社区的VC++项目中工作。我已经为此付出了很多小时的努力,我在Stack和谷歌上尝试了几乎所有关于它的东西,但都无济于事。

我最近的一次尝试是由这个答案引发的,它提到libcurl是一个Nuget包。这很好,因为它附带了所需的所有.lib文件。然而,我遇到了和这个家伙相同的问题,因为我得到了一个链接器错误。

我正在Linker->Input下的项目配置设置中导入以下库作为"附加依赖项":

libcurl.lib;libeay32.lib;ssleay32.lib;Ws2_32.lib;libssh2.lib;zlib.lib;wldap32.lib;

显然,这些.lib文件中的每一个都位于项目文件夹内nuget包文件夹内的不同目录中,因此在Linker->General下,我的"Additional Library Directories"设置为:

"PATHTOPROJECTpackagescurl.7.30.0.2buildnativelibv110x64Releasestatic";
"PATHTOPROJECTpackageszlib.1.2.8.1buildnativelibv110Win32Releasestaticcdecl";
"PATHTOPROJECTpackagesopenssl.1.0.1.21buildnativelibv110x64Releasestaticcdecl";
"PATHTOPROJECTpackageslibssh2.1.4.3.1buildnativelibv110x64Releasestaticcdecl";

我尝试使用静态库,因为如果可以避免的话,我不想将.dll与我的项目可执行文件一起拖动。值得注意的是,我最近尝试使用libcurl时也包括SSL等,但我实际上并不需要这些额外功能。真的,我只需要一个静态的libcurl库,但我似乎找不到或编译不到。

在我的代码中,我还使用了以下内容:#include "curl/curl.h"

我还在C/C++->常规:下的"附加包含目录"下正确添加了附加包含目录

PROJECTPATHpackagescurl.7.30.0.2buildnativeinclude

现在,只要我不尝试并且在项目代码中使用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。源代码附带了.vcproj文件,没有一个为我编译时没有数百个错误,所以就到此为止了。

已解决。

这个Github项目是一个.bat文件,它下载libcurl源代码,编译它,并创建库(静态和动态)。导入由此创建的静态库(libcurl_a.lib)并在我的项目中使用它以及include目录已经成功。

如果有人能提供其他有用的步骤来解决我在使用nuget软件包安装时遇到的问题,我将不接受这个问题。

最后。

最新更新