您的位置:首页 > 编程语言 > C语言/C++

libcurl在vs2013下C++项目中的编译连接

2015-09-08 10:44 453 查看
原文链接:http://blog.csdn.net/sunnyleevip/article/details/41038559

现在我的需求是要把libcurl port入自己的程序里。

首先我是参照下面的博客去做的:

/article/9496908.html

感谢这位作者。

特别说明一下,

1)我现在使用的是7.39.0的版本,在这个版本里已经有vs2012的工程文件了,在vs2013中也直接打开就可以了。

2)同样的理由7.39.0版本中,工程文件已经有了调整,博客中的2.2不需要再修改。

3)我需要的是dll库,但是工程默认的设置是编译出lib库,如果只是需要lib库,不需要设置太多,上述博客中的2.3项,在7.39.0版本中默认就是加入了CURL_STATICLIB宏的。

其它东西都按上述博客去做基本都没问题,最后我还是出现了一个小状况,引入了libcurl之后,自己的代码反而编译出错了。出现下述的错误:

3>d:\program files (x86)\microsoft visual studio 12.0\vc\include\xiosbase(116): error C2065: '_SH_DENYNO' : undeclared identifier
3>          d:\program files (x86)\microsoft visual studio 12.0\vc\include\xiosbase(201) : see reference to class template instantiation 'std::_Iosb<int>' being compiled


我在网上看到也有别人有同样的问题,却没人给出解决方案,自己也折腾了不少时间。这样的情况我觉得很容易出现,因为这个头文件会被很多头文件所包含,比如iostream。

我看了一下xiosbase.h头文件,发现这个116行定义的东西在一个叫share.h的头文件中,然后很不巧的是,libcurl里面也有一个叫share.h的文件,于是,xiosbase.h先调用了libcurl中的头文件而没有去用系统的头文件,这就跟程序搜索头文件路径的顺序相关了。

所以呢,最终我就把系统的头文件路径放在最前面,让编译时先找系统的头文件,编译就通过了。

终于可以继续写代码了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: