构建 libpff 的 vs 工程过程
背景
需要解析 outlook 邮件,发现了 libpff 这个库还不错,从 GitHub 下载下来后使用 vs 进行编译发现很多问题,这里将踩得的坑记录如下。
坑一
问题:直接下载的源代码中缺失了部分代码
进入msvscpp
文件夹,将所有项目升级到对应的 vs 的版本,升级之后再进行生成解决方案,会发现缺失找不到文件情况(或者是无法访问的情况),这里以 libcerror
为例,我找遍了整个文件夹都没有找到 libcerror_error.c
这个文件。
方案解决:直接使用 vcpkg 进行解决
不了解 vcpkg 没有关系,可以理解为 Windows 平台下的包管理工具(vcpkg 教程),vcpkg 中具有 libpff 库,因此可以如果是想直接使用静态库就可以直接使用 vcpkg 进行下载安装。
如果需要了解内部一些 demo 和 test 用例,那就得编译 vs 工程才行。直接进入vcpkg安装目录\buildtrees\libpff\src\20180714-6cc43e7283.clean\msvscpp
,打开libpff.sln
,也是将所有项目升级到对应的 vs 的版本。
接下来就是生成解决方案,这个时候就会发现libcerror
的工程中有了 libcerror_error.c
这个文件(虽然我也不知道 vcpkg 是咋弄出这个文件的),但是还是会编译失败。
坑二
问题:许多项目编译会失败
这个问题是由于这个工程是按照项目生成顺序,只要按照顺序将项目一个个进行编译就可以。
中间还会出现一些小问题,例如在编译libfmapi
时,缺失了libfmapi_guid.h
,那就将libfmapi_guid.c
移除,也可以编译通过。
在编译libpff
还会遇上编译 zlib 失败的问题,那就将libpff
的引用中的zlib
移除引用,如果是 vcpkg 是全局引用的话,那么libpff
也可以编译完成。