让LibCurl与Visual Studio 2013一起使用

时间:2013-11-24 04:37:36

标签: c++ visual-c++ dll libcurl

我无法让LibCurl与Visual Studio 2013一起使用。我下载了当前版本(curl-7.33.0),并尝试按照我在本网站上找到的说明进行操作:Using LibCurl with Visual 2010

但我在我下载的文件夹中找不到 curllib.lib 。我仍然得到错误: enter image description here

在互联网上搜索更多帮助。我现在收到这些错误消息。链接到libcurl.lib似乎有问题?

enter image description here

这是我配置的: enter image description here


enter image description here

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一起使用的清晰简明的指令。

这就是我为了让它发挥作用所做的事情:

  1. 首先,在此处下载Win32 MSVC软件包:http://curl.haxx.se/download.html#Win32 为了这些说明,让我们说你下载到C:\ LibCurl

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

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

  4. 然后,转到项目|项目属性|链接器|输入|附加依赖项| 并添加 curllib.lib

  5. 现在,如果您编译测试程序,您可能会收到消息说libsasl.dll缺失。您需要下载此文件并将其放在与构建相同的目录中。 我使用7-Zip从 OpenLDAP for Windows 中提取 libsasl.dll OpenLDAP for Windows

  6. 这是我上面的测试代码的结果: enter image description here

10 个答案:

答案 0 :(得分:71)

很多这些说明都已过时,因为他们建议使用 win32-ssl-devel-msvc 包卷曲,不再存在

以下说明允许您使用 构建libcurl:

  • Visual Studio 2013
  • curl generic source tarball(在curl 7.44.0上测试)。

甲。构建libcurl静态库

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

    1. 在Visual Studio中,右键单击解决方案资源管理器中的项目,然后单击“属性”
    2. 配置属性&gt; C / C ++&gt;一般&gt;其他包含目录:添加C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\include
    3. 配置属性&gt; C / C ++&gt;预处理器&gt;预处理器定义:添加CURL_STATICLIB
    4. 配置属性&gt;链接器&gt;一般&gt;其他图书馆目录:添加C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib
    5. 配置属性&gt;链接器&gt;输入&gt;其他依赖项:添加libcurl_a.lib
    6. ℃。从您的项目中调用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");
      }
      

答案 1 :(得分:12)

我会在评论中说,但我缺乏分数。 您不必将任何.dll复制到程序运行目录中。 转到项目|属性|配置属性并在行 Envrionment 中写入:PATH=$(ExecutablePath)$(LocalDebuggerEnvironment)

从现在开始,您在项目|项目属性| VC ++目录|二进制文件中提及的任何目录中的所有.dll都可以使用,而无需复制它们。

其余的与你所写的一模一样。

答案 2 :(得分:12)

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

http://www.nuget.org/

然后创建你的项目。

然后转到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)并且它完美运行。

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

  • 确保下载正确的档案。
  • 尝试将cURL文件夹放在没有空格的路径上。
  • 如果您认识某人使用VS2012或更早版本,请尝试使用相同的include和lib代码,看看它是否有效。
  • 粘贴代码的最小工作示例,以便我可以对其进行测试。

答案 5 :(得分:4)

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

  1. 将VS添加到系统路径:
    例如: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
  7. 在那里你找到了包含和libcurl_a.lib。 这个lib对我来说很好 在使用此库编译代码时,请记住定义-DCURL_STATICLIB

答案 6 :(得分:3)

对于Visual Studio 2017,link中的步骤对我有用。如果链接过期或专门为那些下载libcurl zip文件而不是从GitHub克隆的人,我会记下这里的步骤。

  1. 使用“C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat” x64设置环境变量。如果命令成功,您将看到一条显示Environment initialized for 'x64'

  2. 的消息
  3. download libcurl下载并解压缩压缩的libcurl文件。我使用了.zip文件。

  4. cd进入解压缩的libcurl文件夹中的winbuild目录。
  5. 运行nmake /f Makefile.vc mode=dll MACHINE=x64进行构建。有关构建选项的更多信息,请参阅BUILD.WINDOWS文件夹中的winbuild文本文件。
  6. 将一个目录级别和cd升级到builds文件夹以查找已编译的文件。
  7. 一切顺利!

答案 7 :(得分:2)

问题是默认VS2013平台工具的目标未在NuGet包中设置。这就是为什么它适用于VS2012而不是VS2013。我手动创建了替换目标文件。说明和下载:

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

答案 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文件放在与可执行文件相同的文件夹下。

它应该有用。