让LibCurl与Visual Studio 2013一起工作

我无法让LibCurl使用Visual Studio 2013.我下载了当前版本(curl-7.33.0)并尝试按照我在此网站上find的说明操作: 在Visual 2010中使用LibCurl

但是我在我下载的文件夹中找不到curllib.lib 。 而我仍然遇到错误: 在这里输入图像描述

在search互联网寻求更多的帮助。 我现在得到这些错误消息。 链接到libcurl.lib似乎有问题?

在这里输入图像描述

这是我configuration的: 在这里输入图像描述


在这里输入图像描述

里面/ lib我有libcurl.liblibcurl.dll


UPDATE

我为Win32 MSVC下载了这个版本: http : //curl.haxx.se/download.html#Win32添加libcurl库并成功编译后,我现在得到这个错误信息:

The application was unable to start correctly (0xc000007b). Click OK to close the application. 

这里是我试图运行的示例代码:

 #include <iostream> #include <stdio.h> #include <curl/curl.h> int main(void) { CURL *curl; CURLcode res; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://google.com"); res = curl_easy_perform(curl); /* always cleanup */ curl_easy_cleanup(curl); } return 0; } 

最终更新

我相信我已经得到LibCurl现在与Visual Studio 2013一起工作。 坚持ftw! 虽然花了几个小时试图解决这些错误信息,但我现在有点犹豫,说现在一切正常。 这就是为什么我要在这个问题上得到奖励,以获得LibCurl与Visual Studio 2013一起工作的简洁明了的说明。

这是我所做的工作:

  1. 首先,在这里下载Win32 MSVC包: http ://curl.haxx.se/download.html#Win32对于这些说明,假设你下载到C:\ LibCurl

  2. 在Visual Studio中启动一个新项目。 转到项目|项目属性| VC ++目录|包含目录| 将path添加到下载的软件包中的include目录。 (C:\ libcurl中\包括)

  3. 接下来,转到项目|项目属性|链接器|常规|附加库目录| 将path添加到lib目录。 (curllib.dll所在的位置)

  4. 然后,转到Project | Project Properties | Linker | Input | Additional Dependencies | 并添加curllib.lib

  5. 现在,如果您编译testing程序,您可能会收到消息说libsasl.dll丢失。 你将需要下载这个文件并把它放在和你的版本相同的目录中。 我使用7-Zip从OpenLDAP for Windows中提取libsasl.dll 。 Windows的OpenLDAP

这是我上面的testing代码的结果: 在这里输入图像描述

我会在评论中说,但我缺乏点。 您不必将任何.dll文件复制到您的程序运行目录中。 转到项目| 属性| configuration属性和行Envrionment写: PATH=$(ExecutablePath)$(LocalDebuggerEnvironment)

从现在开始,您在Project | Project Properties | VC ++目录|二进制文件中提到的任何目录中的所有.dll文件都应该可用,而无需复制它们。

剩下的就和你写的一样。

很多这些指令已经过时了,因为他们推荐使用curl的win32-ssl-devel-msvc包, 而这个已经不存在了

以下说明允许您使用以下命令来构buildlibcurl:

  • Visual Studio 2013
  • curl通用源代码压缩包(testingcurl7.44.0)。

A.构buildlibcurl静态库

  1. http://curl.haxx.se/latest.cgi?curl=tar.gz下载最新的curl 通用源代码
  2. 将源代码解压到本地目录(我们将使用C:\libcurl
  3. 打开命令提示符
  4. "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"初始化您的VC环境variables(根据需要调整您的VS 2013安装目录)
  5. cd C:\libcurl\winbuild
  6. nmake /f Makefile.vc mode=static VC=12
  7. 构build应该出现在C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl

B.在Visual Studio中与libcurl链接

  1. 在Visual Studio中,右键单击解决scheme资源pipe理器中的项目,然后单击“属性”
  2. configuration属性> C / C ++>常规>其他包含目录:添加C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\include
  3. configuration属性> C / C ++>预处理器>预处理器定义:添加CURL_STATICLIB
  4. configuration属性>链接器>常规>其他库目录:添加C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib
  5. configuration属性>链接器>input>其他依赖项:添加libcurl_a.lib

C.从您的项目调用libcurl

以下示例显示了对libcurl的调用:

 #include "stdafx.h" #include <curl/curl.h> void main(int argc, char* argv[]) { CURL *curl = curl_easy_init(); if (curl) printf("curl_easy_init() succeeded!\n"); else fprintf(stderr, "Error calling curl_easy_init().\n"); } 

我发现的最简单的方法是首先确保安装了nuget。

http://www.nuget.org/

然后创build你的项目。

然后去http://www.nuget.org/packages/curl/并按照指示进入包pipe理器控制台,然后键入;PM> Install-Package curl

如果您在项目目录中查找软件包目录,则会find包含文件和库文件。 请注意,Visual Studio 110的版本不是120,但是因为libcurl是C库,所以可以在Visual Studio 2013中使用它。请确保在项目属性中的Visual C ++目录下指定了include目录和lib目录。

确保将以下文件作为链接器libcurl.lib;libeay32.lib;ssleay32.lib;Ws2_32.lib;libssh2.lib;zlib.lib;wldap32.lib;附加inputlibcurl.lib;libeay32.lib;ssleay32.lib;Ws2_32.lib;libssh2.lib;zlib.lib;wldap32.lib;

另一种使用curl / libcurl的方法是使用CMake v2.8.12 +(假设你的计算机上已经安装了git)

打开cmd窗口并将dir更改为相应的文件夹

 git clone https://github.com/bagder/curl.git mkdir msbuild cd msbuild cmake ..\curl -G"Visual Studio 12 Win64" -DCMAKE_INSTALL_PREFIX=C:\curl.vc12 -DCURL_STATICLIB=ON < ... lots of output here ... > 

在Visual Studio中打开生成的CURL.sln并构build它。

在例子中使用CMake选项

-Gselect构build生成器。 在我们的例子中,Visual Studio 2013 64位目标

-DCMAKE_INSTALL_PREFIX – 提供安装目标的根文件夹

-DCURL_STATICLIB = ON – 为静态库生成构build

在构build安装目标后,您将在C:\ curl.vc12中findbin / include / lib文件夹

为您的解决scheme提供这些path,并使用curl lib构build代码。

我试图用VS2012从头开始(我没有2013),它完美的作品。

所以,我不确定你的问题是什么,但是:

  • 确保您下载正确的存档。
  • 尝试将cURL文件夹放在没有空间的path上。
  • 如果你知道使用VS2012或更老版本的人,请尝试使用与include和lib相同的代码,看看它是否有效。
  • 粘贴你的代码的一个最小工作的例子,所以我可以testing它。

这有点晚了,但对于那些仍然有问题的人来说,这个方法对我来说最合适:

  1. 将VS添加到系统PATH:
    例如: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
  2. http://curl.haxx.se/download.html下载当前的curl-X.zip并解压。
  3. curl-X/winbuild打开命令行。
  4. 调用vcvars32.bat
  5. 调用nmake /f Makefile.vc mode=static VC=12
  6. 转到curl-X/builds/libcurl-XXX

在那里你可以findincludes和libcurl_a.lib 。 这个lib工作正常。
记住在用这个lib编译你的代码时定义-DCURL_STATICLIB

问题在于NuGet包中没有设置默认VS2013平台工具目标 。 这就是为什么它在VS2012,而不是VS2013。 我手动创buildreplace目标文件。 说明和下载:

https://github.com/evoskuil/curl-nuget-targets

下载curl v7.37.0源代码并使用提供的Visual Studio项目文件。

过去几个星期我花了我自己的个人项目文件,这是基于原始的VC6文件,并将其添加到存储库。

为DLL和静态库构build提供了.dsw / .dsp(VC6),.sln / .vcproj(VC7,VC7.1,VC8和VC9以及.sln / .vcxproj(VC10,VC11和VC12)在Win32和x64configuration中都支持OpenSSL和Windows SSPI / SChannel。

我发现一个简单的方法,使用最新的软件包在VC ++中工作。 我基本上遵循在Visual Studio中使用libcurl中的步骤。 libcurl和VC ++在指令中非常古老。

首先在下载页面下载ZIP文件https://curl.haxx.se/download.html ZIP包为https://curl.haxx.se/download/curl-7.50.1.zip

转到项目 – > Windows \ VC10(或您的VC版本)\ lib \ libcurl.sln,在VC ++中打开项目。

在DLL版本中构build项目。 DLLdebugging不能在我的VC ++上运行。

转到生成\ Win32 \ VC10 \ DLL Release,你可以find上一步生成的lib和dll文件。

用include和lib文件夹创build一个新的文件夹。 将libcurb.dll和libcurb.lib无论在DLL Release文件夹中复制到新的\ lib。 将curl-7.50.1 \ include中的所有内容复制到新的\ include文件夹中。

C ++属性 – >configuration属性 – > VC ++目录,添加新的\ include包含目录,新的lib到库目录; 将新的\ lib添加到链接器 – >常规 – >其他库目录,将libcurl.lib添加到链接器 – >input – >其他依赖项

看来我必须将dll文件放在与可执行文件相同的文件夹下。

它应该工作。

感谢您的详细指导!

我看到最新版本的msvc libcurl版本在官方网站上没有。 所以,我在互联网上find的图书馆在下面的链接。

https://osdn.net/projects/sfnet_jcurltools/downloads/depending/libcurl-7.19.3-win32-ssl-msvc.7z/