2

我正在尝试向我的应用程序添加 PNG 支持,因此我想包含 libpng。我知道它需要 zlib,因此我也下载了它。我进入 png 文件夹/projects/vstudio 并打开了解决方案。我编译了它,它运行得很好。我将其中的一些标头添加到我的应用程序中,并复制了 lib 文件。我的程序是一个用 c++ 编写的 dll,后来在 C# 中使用。当我在 C# 中运行它时,它抱怨找不到我的 dll(如果我删除 png 部分它工作正常,这很难)。我以前遇到过这个问题,这通常意味着 dll 依赖是错误的。
现在... libpng 编译了一些 .lib 文件和一些 .dll 文件。dll文件更大。我唯一的猜测是它也需要 dll 文件,但我看到人们可以在没有 dll 的情况下链接到 libpng。
所以我的问题是:如何将 libpng(和该实例的 zlib)编译成静态库,如何将它们包含在我的项目中?我在互联网上搜索过,找不到任何有用的东西。

4

1 回答 1

3

要使所有库成为静态库,您必须“从头开始”将所有内容重新编译为静态库。

这仅仅意味着您应该为序列中的每个库创建一组项目,并将输出类型设置为静态库

之后,您应该消除库本身之间的库依赖关系(这意味着您应该将某些项目的输出链接到另一个项目,例如,如果您的“libpng”库使用“libzip”,则意味着您应该首先编译“libzip”并链接该输出(静态库)到您的“libpng”项目。

最后,您将拥有为您的平台编译的大量静态库,您可以在您的项目中使用它们。


还要提一下,尝试更仔细地使用谷歌搜索。我确定有人已经完成了这项工作,您可能需要为您的平台下载一个 .lib 文件包(我知道“开发”库包通常只包含一个与适当的 .dll 文件配对的导入库,但是有很多像你这样的爱好者:)

于 2010-06-02T10:56:12.497 回答