草庐IT

c++ - curl 与 Visual Studio 2013

coder 2024-02-09 原文

所以我发现 cURL 是一个非常好的库,并且在 OSX 中工作得很好。 但是现在在 Windows 上,我在准备这个库时遇到了很大的麻烦。我现在用谷歌搜索了大约 2 天,并尝试了十几种(详细)不同的方法来准备好它。没有任何成功。

以下是我基本上尝试过的一些方法:

  1. 直接下载:这里的问题已经从正确的下载开始了。官方下载页面非常困惑,所以我考虑了这个“cURL 下载向导”>“libcurl 开发”,它给了我一个版本,我应该能够将它包含到任何项目中。但究竟如何包含它呢?在任何说明中,它都会引导我进入我什至没有的目录。几乎总是提到这个“curllib.lib”。我在该下载页面上下载了大约 6 个不同的版本,其中没有一个有这个文件。 (参见示例 this 说明)
  2. Git + CMake:作为上述链接的解决方案,建议对此使用 git clone。我在那里完成了所有说明,并且还生成了仅带有警告的项目。但这里也说:
    构建安装目标后,您会在 C:\curl.vc12 中找到 bin/include/lib 文件夹
    好吧,我并没有真正理解他“构建安装目标”的观点,我只是构建整个项目 map 。编译正常(115 次成功,0 次失败,2 次跳过)。但是现在 C:\curl.vc12 不存在了。在编译之前我必须预先设置什么?
  3. NuGet:思路又来自第(1)点的链接,与NuGet不同的解决方案。
    随着 成功添加 'curl 7.30.0.2' 进行测试。 它看起来也不错,但是编译 simple.c 会导致一堆 unresolved external symbol 链接器错误。但是提供了一个解决方案:
    确保在项目属性中的 Visual C++ 目录下指定了 include 目录和 lib 目录。
    所以在 Project > Properties > VC++ Properties > "Include Directories"
    Project > Properties > VC++ Properties > "Library Directories"
    以及在 Project > C/C++ > General > "Additional Include Directories"Project > Linker > General > "Additional Library Directories" 我拼命添加\packages\路径我的项目文件夹。
    如说明中所述,我将 libcurl.lib;libeay32.lib;ssleay32.lib;Ws2_32.lib;libssh2.lib;zlib.lib;wldap32.lib; 添加到 Project > Linker > 输入 > “附加依赖项”
    所有这些都完成了,unresolved external symbol 错误消失了!因此,我只收到一个错误,提示 cannot open file 'libcurl.lib'。我可以在这里做什么?

我对这一切都很陌生。但我现在非常努力地让这个最终起作用。那我该怎么办?
我使用 Visual Studio 2013 Community Edition。当前最新版本的 cURL 是 7.42.1。 非常欢迎任何帮助!

最佳答案

我自己遇到了问题,现在终于可以使用了。 我从 official website 下载了 curl-7.42.1.zip . 在存档中,您将找到源代码和 winbuild/BUILD.WINDOWS.txt,其中基本上包含我遵循的说明。我假设它已解压缩到 C:\curl-7.42.1。

打开 Visual Studio command prompt位于

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts

这会自动设置使用 Visual Studio 工具(如编译器)所需的环境变量。然后移动到winbuild目录调用

nmake /f Makefile.vc mode=dll

如我上面提到的文本文件中所述。

这将创建目录

C:\curl-7.42.1\builds\libcurl-vc-x86-release-dll-ipv6-sspi-winssl

包含libcurl.dll、libcurl.lib和必要的头文件。我们将其重命名为 C:\curl-7.42.1\builds\release :'D

  1. 然后打开您的项目。
  2. 打开项目的属性。
  3. 确保选择发布作为配置(左上角)!
  4. 导航到 VC++ Directories > Include directories 并添加 C:\curl-7.42.1\builds\release\include
  5. C:\curl-7.42.1\builds\release\lib 添加到 VC++ 目录 > 库目录
  6. 转到 Linker > Input > Additional Dependencies 并添加 libcurl.lib
  7. 最后将 C:\curl-7.42.1\builds\release\bin\libcurl.dll 复制到您的项目文件夹。

这应该可以解决问题! :D 如果你想在 Debug模式下使用 cURL,你可以做几乎相同的事情,使用 nmake/f Makefile.vc mode=dll debug=yes 重新编译,转到项目的属性,添加新的创建了目录路径(将 libcurl.lib 更改为 libcurl_debug.lib),您应该完成了。

关于c++ - curl 与 Visual Studio 2013,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30288415/

有关c++ - curl 与 Visual Studio 2013的更多相关文章

  1. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  2. ruby - 使用 `+=` 和 `send` 方法 - 2

    如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

  3. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  4. arrays - Ruby 数组 += vs 推送 - 2

    我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“

  5. += 的 Ruby 方法 - 2

    有没有办法让Ruby能够做这样的事情?classPlane@moved=0@x=0defx+=(v)#thisiserror@x+=v@moved+=1enddefto_s"moved#{@moved}times,currentxis#{@x}"endendplane=Plane.newplane.x+=5plane.x+=10putsplane.to_s#moved2times,currentxis15 最佳答案 您不能在Ruby中覆盖复合赋值运算符。任务在内部处理。您应该覆盖+,而不是+=。plane.a+=b与plane.a=

  6. ruby - 在 Ubuntu 14.04 中使用 Curl 安装 RVM 时出错 - 2

    我试图在Ubuntu14.04中使用Curl安装RVM。我运行了以下命令:\curl-sSLhttps://get.rvm.io|bash-sstable出现如下错误:curl:(7)Failedtoconnecttoget.rvm.ioport80:Networkisunreachable非常感谢解决此问题的任何帮助。谢谢 最佳答案 在执行curl之前尝试这个:echoipv4>>~/.curlrc 关于ruby-在Ubuntu14.04中使用Curl安装RVM时出错,我们在Stack

  7. ruby - Sinatra + Heroku + Datamapper 使用 dm-sqlite-adapter 部署问题 - 2

    出于某种原因,heroku尝试要求dm-sqlite-adapter,即使它应该在这里使用Postgres。请注意,这发生在我打开任何URL时-而不是在gitpush本身期间。我构建了一个默认的Facebook应用程序。gem文件:source:gemcuttergem"foreman"gem"sinatra"gem"mogli"gem"json"gem"httparty"gem"thin"gem"data_mapper"gem"heroku"group:productiondogem"pg"gem"dm-postgres-adapter"endgroup:development,:t

  8. ruby - Ruby 中字符串运算符 + 和 << 的区别 - 2

    我是Ruby和这个网站的新手。下面两个函数是不同的,一个在函数外修改变量,一个不修改。defm1(x)x我想确保我理解正确-当调用m1时,对str的引用被复制并传递给将其视为x的函数。运算符当调用m2时,对str的引用被复制并传递给将其视为x的函数。运算符+创建一个新字符串,赋值x=x+"4"只是将x重定向到新字符串,而原始str变量保持不变。对吧?谢谢 最佳答案 String#+::str+other_str→new_strConcatenation—ReturnsanewStringcontainingother_strconc

  9. ruby - rails 3.2.2(或 3.2.1)+ Postgresql 9.1.3 + Ubuntu 11.10 连接错误 - 2

    我正在使用PostgreSQL9.1.3(x86_64-pc-linux-gnu上的PostgreSQL9.1.3,由gcc-4.6.real(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1,64位编译)和在ubuntu11.10上运行3.2.2或3.2.1。现在,我可以使用以下命令连接PostgreSQLsupostgres输入密码我可以看到postgres=#我将以下详细信息放在我的config/database.yml中并执行“railsdb”,它工作正常。开发:adapter:postgresqlencoding:utf8reconnect:falsedat

  10. ruby - 在 Ruby + Chef 中检查现有目录失败 - 2

    这是我在ChefRecipe中的一blockRuby:#ifdatadirdoesn'texist,moveoverthedefaultoneif!File.exist?("/vol/postgres/data")execute"mv/var/lib/postgresql/9.1/main/vol/postgres/data"end结果是:Executingmv/var/lib/postgresql/9.1/main/vol/postgres/datamv:inter-devicemovefailed:`/var/lib/postgresql/9.1/main'to`/vol/post

随机推荐