1

因此,我一直在尝试构建 libarchive 几天,遵循本指南和许多其他线程:https ://github.com/libarchive/libarchive/wiki/BuildInstructions

我想要一个支持 LZMA、zlib 和 bzip2 的静态库。我也有这些的静态版本(lib)

我只是无法让它正常工作。我使用 CMAKE 为 VS2010 和 NMAKE 生成 make 文件。使用这两个选项,事情编译得很好,但是当我尝试使用生成的 archive_static.lib 时,在我的项目中我得到了大量未解决的外部。编译库的 .dll 版本可以在没有未解析的外部的情况下工作,但随后它开始询问我没有也不想使用的 zlib.dll、bzip2.dll 等。

我想我需要用 cmake 设置一些标志,但我不知道该怎么做。

任何帮助是极大的赞赏。 http://www.libarchive.org/

4

1 回答 1

1

我不确定这是否是这里发生的事情,但请记住,将二进制文件链接到静态库时,其外部依赖项不一定嵌入其中,这意味着您可能需要提供静态库您的程序间接依赖于 libarchive,即 LZMA、zlib 和 bzip2 在您的情况下,显式。

此外,在链接静态与动态时,Windows 上存在一些混淆,因为在这两种情况下,您都提供了一个 .lib 文件,因此很容易混淆并提供动态链接的 .lib,而不是静态版本。如果您这样做,链接器可能会拒绝链接您的程序(尤其是在 boost 中发生的情况),或者可能链接得很好,然后在执行时,操作系统将需要相应的 .dll。

于 2013-09-11T01:37:05.543 回答