我正在尝试为我的应用程序添加PNG支持,因此我想要包含libpng。我知道它需要zlib,因此我也下载了它。我进入了png文件夹/ projects / vstudio,我打开了解决方案。我编译了它,它很好。我将一些标题添加到我的应用程序中并复制了lib文件。我的程序是用c ++编写的dll,后来在C#中使用。当我在C#中运行它时,抱怨没有找到我的dll(如果我删除了png部分它会很好)。我之前遇到过这个问题,通常意味着dll依赖是错误的
现在... libpng编译了一些.lib文件和一些.dll文件。 dll文件更大。我唯一的猜测是它也需要dll文件,但我看到人们可以在没有dll的情况下链接到libpng。
所以我的问题是:如何将libpng(和该实例的zlib)编译成静态库,如何在项目中包含这些?我在互联网上搜索过,找不到任何有用的东西。
答案 0 :(得分:3)
要使所有库都是静态的,您必须将所有“从头开始”重新编译为静态库。
这只是意味着您应该为序列中的每个库创建一组项目,并将输出类型设置为 静态库 。
之后你应该消除库本身之间的库依赖关系(这意味着你应该将一些项目的输出链接到另一个项目,例如如果你的“libpng”库使用“libzip”,这意味着你应该首先编译“libzip”和输出(静态库)链接到“libpng”项目。
最后,您将为您的平台编译一大堆静态库,可以在项目中使用。
另外,尝试更仔细地使用Google搜索。我确定有人已经完成了这项工作,您可能需要为您的平台下载.lib文件包(我经常知道“dev”库包只包含一个与适当的.dll文件配对的导入库,但是有很多像你这样的爱好者:)