原文转载于:https://blog.csdn.net/u010431493/article/details/78950490
Visual Studio 2015编译Eviv2库
- 预防针
- 准备工作
- 开始编译
预防针
最近在写一个照片管理的玩具项目,需要读取照片的exif信息,找来找去最后选定了exiv2这个第三方开源库,主要是支持的格式全面(详情参考:http://www.exiv2.org/metadata.html).之前在百度搜索了一些这个库相关的资料,发现很少,只有一篇博客讲述了如何使用,照葫芦画瓢写了一个,结果段错误(此时的心情......),在后来的搜索中终于知道了问题的所在,官方只提供了Release库没有提供Debug库,然而一般写代码的时候默认都是Debug模式,所以........下面开始编译exiv2
- 1
- 2
准备工作
1.Visual Studio 2015
2.zlib源代码(http://www.zlib.net)
3.expat源代码(https://libexpat.github.io/)
3.exiv2源代码
注:我的源代码版本openssl-1.0.2n、exiv2-0.26、zlib1211
开始编译
1.建立一个工作目录exiv2,把exiv2的源代码放进去解压
2.在exiv2\exiv2-0.26-trunk\exiv2-trunk\msvc下面有一个exiv2.sln打开
3.打开的时候会有一个VS的单向升级,点确定就行(你只能点这个,你要点取消我也没意见)
4.等待(10-30分钟左右)
5.等待的时候我们可以先把其他工作做了,把zlib和expat的源代码分别解压到exiv2\exiv2-0.26-trunk目录下(需要修改zlib的文件夹名称,就是把后面的版本号去掉只剩一个zlib)
6.单向升级完成后,在libexiv2的项目属性中可以看到这两个,这下知道为啥要把源代码exiv2\exiv2-0.26-trunk目录下了
7.选择自己想要的版本直接编译即可。如果出现下面这样的错误,直接将项目属性->配置属性->c/c++->常规,将“警告视为错误”的选项改为“否”。就搞定(警告不是错误)
8.编译的时候注意运行时库、Release、Debug这几个选项要和以后的项目相对应 不然会出现一些奇奇怪怪的bug。
注意:
如果报writeRandomBytes_RtlGenRandom链接错误,请将expat库的源码换成低版本的,官方的readme中使用的是expat-2.1.0
下面这个是一个expat的一个版本漏洞(CVE-2017-11742)貌似后面的版本修复了。所以报链接错误。有兴趣的可以点下面的链接查看具体的信息。
https://www.cvedetails.com/cve/CVE-2017-11742/
有任何问题欢迎拍砖(轻点。。。。。)