如何构建 librevenge 静态库 (*.lib) 以在 Windows 中使用?

问题描述 投票:0回答:1

我无法找到为 Windows 构建 librevenge 静态库的工作解决方案。

对于更广泛的上下文,我需要构建 librevenge 静态库,因为这是 libcdr 库的依赖项。我需要 libcdr 才能在 64 位 Windows(发行版)上工作,因此我需要为 x64/release 构建 librevenge。


作为参考,这是我从 GitHub 克隆的 librevenge 项目:https://github.com/Distrotech/librevenge

librevenge 项目使用 GNU Make 来处理构建过程,通过实验我发现我无法在 Windows Git Bash 终端中运行 autogen.sh 和配置脚本,因为存在许多错误,从语法问题到多个丢失的包。我可以确认这些脚本在 WSL 和 MacOS 上正确运行,几乎没有问题,经过几次 google 搜索后就可以直接解决。当然,这是可以预料的,因为 Windows 不是 UNIX 系列的一部分,而 GNU Make 是为了在基于 UNIX 的系统上工作而设计的。

使用 Visual Studio

根据 librevenge 自述文件,build/win32/ 中有工作区,可以在其中从提供的 Visual Studio 解决方案文件构建静态库。在 build/win32 内部,我在 VS2022 中打开了 librevenge.vcxproj.sln,并将解决方案配置更改为输出 release/x64。

奇怪的是,librevenge 项目中引用了许多源文件,但其中实际上并不存在于存储库中的任何位置。正如预期的那样,该项目因此无法建设。

Visual Studio missing source file errors

我尝试查看 librevenge 存储库中的不同标签,例如 librevenge-0.0.4、librevenge-0.0.0 等,并在尝试构建 VS 项目时遇到相同的错误。

我的假设是 Visual Studio 解决方案尚未更新以匹配新版本的 librevenge 中使用的源文件。如果是这种情况,是否有一种解决方法可以用来查找成功编译 librevenge 项目所需的源文件?

在 WSL 中使用 GNU Make

另一种方法是使用 WSL 在我的 Windows 计算机上模拟 Linux 发行版。使用 g++ 编译器,我成功编译了 .so 文件形式的 librevenge 库。

我尝试过使用能够交叉编译的x86_64-w64-mingw32-g++。

命令:

./autogen.sh

安装正确的软件包后就没有问题了。

./configure --build=x86_64-linux-gnu --host=x86_64-w64-mingw32 CC=x86_64-w64-mingw32-g++ --disable-werror

花了一些时间来弄清楚交叉编译需要哪些参数,但我相信这越来越接近我所需要的。所以 --build 指定了我正在构建的当前环境,而 --host 是我正在构建的 64 位 Windows。我需要 --disable-werror 以便编译器忽略停止编译的“不必要的注释”。

make

这里我遇到了一个问题,即使 zlib.h 已经安装在 usr/include 和 usr/x86_64-w64-mingw32-g++/include 中,也无法找到 zlib.h。

我可能会继续沿着这种方式进行交叉编译,但我更愿意使用 Visual Studio 在 Windows 中本地构建该库。

总结

展望未来,请给我一些关于在 Visual Studio 或 WSL 中构建 librevenge 的指导。正如我之前所说,我宁愿在 Visual Studio 上构建 librevenge,因为这将使将来的 Windows 构建变得简单。

build static-libraries cross-compiling gnu-make windows-subsystem-for-linux
1个回答
0
投票

我发现在 Windows 上构建 librevenge 最简单的方法是使用存储库中提供的 Visual Studio 项目并修复错误(删除丢失的文件)。

构建 librevenge 的步骤:

  1. 克隆存储库@https://github.com/Distrotech/librevenge
  2. Git 查看最新的 librevenge 版本标签。
  3. 转到 librevenge/build/win32 并打开 librevenge.vcxproj.sln。
  4. 尝试构建 librevenge 项目,你会看到一堆错误。
  5. 删除解决方案资源管理器中所有丢失的.cpp和.h文件(有很多)。
  6. 转到配置管理器并创建新的 x64 解决方案平台。
  7. 为 librevenge 项目添加包含文件路径以 boost(适用于所有配置和平台)。
  8. 在选定的目标平台上构建 librevenge 项目。
  9. 对于 win32 平台,静态库将出现在 \librevenge uild\win32\Release\lib 和 \librevenge uild\win32\Release\lib 中。

我希望这对某人有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.