libcurl在vs2013下C++项目中的编译连接
2014-11-12 09:19
435 查看
现在我的需求是要把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之后,自己的代码反而编译出错了。出现下述的错误:
我在网上看到也有别人有同样的问题,却没人给出解决方案,自己也折腾了不少时间。这样的情况我觉得很容易出现,因为这个头文件会被很多头文件所包含,比如iostream。
我看了一下xiosbase.h头文件,发现这个116行定义的东西在一个叫share.h的头文件中,然后很不巧的是,libcurl里面也有一个叫share.h的文件,于是,xiosbase.h先调用了libcurl中的头文件而没有去用系统的头文件,这就跟程序搜索头文件路径的顺序相关了。
所以呢,最终我就把系统的头文件路径放在最前面,让编译时先找系统的头文件,编译就通过了。
终于可以继续写代码了。
首先我是参照下面的博客去做的:
/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中的头文件而没有去用系统的头文件,这就跟程序搜索头文件路径的顺序相关了。
所以呢,最终我就把系统的头文件路径放在最前面,让编译时先找系统的头文件,编译就通过了。
终于可以继续写代码了。
相关文章推荐
- libcurl在vs2013下C++项目中的编译连接
- VS项目使用C++连接MySQL
- VS2013编译的用c++写的win32程序兼容性问题
- C++连接MYSQL数据库(使用MYSQL API方式,环境VS2013+MYSQL5.6)
- cocos2d-x项目与vs2013编译
- vs2013下c++连接mysql数据库
- 并行编译加快 VS C++ 项目的编译速度
- vs2013 c++代码内出现中文导致编译错误
- WIN7 + VS2013 使用c++创建项目各种报错问题解决方案
- 并行编译加快 VS C++ 项目的编译速度
- 命令行编译vs2013项目
- 解决vs中编译c++项目时报类似:LINK : fatal error LNK1104: 无法打开文件“kernel32.lib”错误
- 基于Vs2013 C++连接 2010Access 数据库
- 并行编译加快 VS C++ 项目的编译速度
- vs2013无法编译c/c++ 错误 TRK0002: 未能执行命令cl.exe 存储控制块地址无效
- vs2013+qt5.3.2 QSerialPort 编译时提示找不到外部符号,连接出错的问题
- vs2013 在win7下,使用c++创建项目各种报错问题解决方案
- C++连接MYSQL数据库(使用MYSQL API方式,环境VS2013+MYSQL5.6)
- 并行编译加快VS C++项目的编译速度
- C/C++/C#问题记录(一)VS2012编译调用dll项目找不到lib的workaround