我无法让LibCurl与Visual Studio 2013一起使用。我下载了当前版本(curl-7.33.0),并尝试按照我在本网站上找到的说明进行操作:Using LibCurl with Visual 2010
但我在我下载的文件夹中找不到 curllib.lib 。我仍然得到错误:
在互联网上搜索更多帮助。我现在收到这些错误消息。链接到libcurl.lib似乎有问题?
这是我配置的:
Inside / lib我有 libcurl.lib 和 libcurl.dll
更新
我为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合作了。坚持不懈! 虽然花了好几个小时试图解决这些错误信息后,我有点犹豫,说现在一切正常。这就是为什么我要在这个问题上获得赏金以获得关于让LibCurl与Visual Studio 2013一起使用的清晰简明的指令。
这就是我为了让它发挥作用所做的事情:
首先,在此处下载Win32 MSVC软件包:http://curl.haxx.se/download.html#Win32 为了这些说明,让我们说你下载到C:\ LibCurl
在Visual Studio中启动一个新项目。转到项目|项目属性| VC ++目录|包含目录| 将路径添加到下载的包中的include目录。 (C:\ libcurl中\包括)
接下来,转到项目|项目属性|链接器|常规|其他库目录| 将路径添加到lib目录。 (curllib.dll所在的位置)
然后,转到项目|项目属性|链接器|输入|附加依赖项| 并添加 curllib.lib
现在,如果您编译测试程序,您可能会收到消息说libsasl.dll缺失。您需要下载此文件并将其放在与构建相同的目录中。 我使用7-Zip从 OpenLDAP for Windows 中提取 libsasl.dll 。 OpenLDAP for Windows
这是我上面的测试代码的结果:
答案 0 :(得分:71)
很多这些说明都已过时,因为他们建议使用 win32-ssl-devel-msvc 包卷曲,不再存在。
以下说明允许您使用 构建libcurl:
C:\libcurl
)"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"
初始化VC环境变量(根据需要调整VS 2013安装目录)cd C:\libcurl\winbuild
nmake /f Makefile.vc mode=static VC=12
C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl
C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\include
CURL_STATICLIB
C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib
libcurl_a.lib
以下示例显示了对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");
}
答案 1 :(得分:12)
我会在评论中说,但我缺乏分数。
您不必将任何.dll复制到程序运行目录中。
转到项目|属性|配置属性并在行 Envrionment 中写入:PATH=$(ExecutablePath)$(LocalDebuggerEnvironment)
。
从现在开始,您在项目|项目属性| VC ++目录|二进制文件中提及的任何目录中的所有.dll都可以使用,而无需复制它们。
其余的与你所写的一模一样。
答案 2 :(得分:12)
我发现最简单的方法是首先确保安装了nuget。
然后创建你的项目。
然后转到http://www.nuget.org/packages/curl/并按照包管理器控制台的说明操作并输入PM> Install-Package curl
如果您在项目目录中查找packages目录,您将找到包含文件和库文件。请注意,Visual Studio 110有一个版本,而不是120,但由于libcurl是一个C库,因此可以将它与Visual Studio 2013一起使用。确保在项目属性中的Visual C ++目录下指定了include目录和lib目录。 / p>
确保将以下文件作为链接器的附加输入
libcurl.lib;libeay32.lib;ssleay32.lib;Ws2_32.lib;libssh2.lib;zlib.lib;wldap32.lib;
答案 3 :(得分:10)
使用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并构建它。
我在示例中使用的CMake选项
-G选择构建生成器。在我们的案例中,Visual Studio 2013 64位目标
-DCMAKE_INSTALL_PREFIX - 提供应安装目标的根文件夹
-DCURL_STATICLIB = ON - 为静态库生成构建
构建安装目标后,您将在C:\ curl.vc12中找到bin / include / lib文件夹
提供解决方案的路径并使用curl lib构建代码。
答案 4 :(得分:5)
我尝试从头开始使用VS2012(我没有2013)并且它完美运行。
所以,我不确定你的问题是什么,但是:
答案 5 :(得分:4)
这有点晚了,但对于那些仍有问题的人来说,这种方法最适合我:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
。http://curl.haxx.se/download.html
下载当前curl-X.zip并解压缩。curl-X/winbuild
打开命令行。vcvars32.bat
。nmake /f Makefile.vc mode=static VC=12
。curl-X/builds/libcurl-XXX
。在那里你找到了包含和libcurl_a.lib
。
这个lib对我来说很好
在使用此库编译代码时,请记住定义-DCURL_STATICLIB
。
答案 6 :(得分:3)
对于Visual Studio 2017,link中的步骤对我有用。如果链接过期或专门为那些下载libcurl zip文件而不是从GitHub克隆的人,我会记下这里的步骤。
使用“C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat” x64
设置环境变量。如果命令成功,您将看到一条显示Environment initialized for 'x64'
从download libcurl下载并解压缩压缩的libcurl文件。我使用了.zip
文件。
cd
进入解压缩的libcurl文件夹中的winbuild
目录。nmake /f Makefile.vc mode=dll MACHINE=x64
进行构建。有关构建选项的更多信息,请参阅BUILD.WINDOWS
文件夹中的winbuild
文本文件。cd
升级到builds
文件夹以查找已编译的文件。一切顺利!
答案 7 :(得分:2)
问题是默认VS2013平台工具的目标未在NuGet包中设置。这就是为什么它适用于VS2012而不是VS2013。我手动创建了替换目标文件。说明和下载:
答案 8 :(得分:2)
下载curl v7.37.0源代码并使用提供的Visual Studio项目文件。
我花了最近几周的时间来完善自己的个人项目文件,这些文件基于原始的VC6文件,并将它们添加到存储库中。
为DLL和静态提供了.dsw / .dsp(VC6),. sln / .vcproj(VC7,VC7.1,VC8和VC9以及.sln / .vcxproj(VC10,VC11和VC12)文件库构建时支持Win32和x64配置中的OpenSSL和Windows SSPI / SChannel。
答案 9 :(得分:2)
我找到了一种简单的方法,可以使用最新的软件包在VC ++中使用它。我基本上遵循了在Visual Studio中使用libcurl的步骤。 libcurl和VC ++在指令中非常陈旧。
首先在下载页面https://curl.haxx.se/download.html下载ZIP文件ZIP包是https://curl.haxx.se/download/curl-7.50.1.zip
转到项目 - &gt; Windows \ VC10(或您的VC版本)\ lib \ libcurl.sln,在VC ++中打开项目。
在DLL Release中构建项目。 DLL调试不适用于我的VC ++。
转到build \ Win32 \ VC10 \ DLL Release,你可以找到上一步生成的lib和dll文件。
使用include和lib文件夹创建一个新文件夹。将libcurb.dll和libcurb.lib复制到DLL Release文件夹中的任何内容到新的\ lib。将curl-7.50.1 \ include中的所有内容复制到新的\ include文件夹。
C ++属性 - &gt;配置属性 - &gt; VC ++目录,添加新的\ include到包含目录,将新的\ lib添加到库目录;将新\ lib添加到链接器 - &gt;一般 - &gt;其他库目录,将libcurl.lib添加到链接器 - &gt;输入 - &gt;附加依赖
似乎我必须将dll文件放在与可执行文件相同的文件夹下。
它应该有用。