2

アプリケーションに PNG サポートを追加しようとしているので、libpng を含めたいと考えています。zlib が必要であることはわかっているので、それもダウンロードしました。png フォルダー/projects/vstudio に入り、ソリューションを開きました。私はそれをコンパイルしましたが、うまくいきました。そこからいくつかのヘッダーをアプリケーションに追加し、lib ファイルをコピーしました。私のプログラムは、後で C# から使用される c++ で記述された dll です。C# で実行すると、dll が見つからないというエラーが表示されます (png 部分を削除しても問題なく動作します)。以前にこの問題が発生したことがありますが、通常は dll の依存関係が間違っていることを意味します。
さて... libpng はいくつかの .lib ファイルといくつかの .dll ファイルの両方をコンパイルしました。dll ファイルが大きくなります。私の唯一の推測では、dll ファイルも必要ですが、dll なしで libpng にリンクできることがわかりました。
私の質問は次のとおりです。libpng(およびそのインスタンスのzlib)を静的ライブラリにコンパイルするにはどうすればよいですか?また、それらをプロジェクトに含めるにはどうすればよいですか? インターネットで検索しましたが、有用なものは見つかりませんでした。

4

1 に答える 1

3

すべてのライブラリを静的にするには、すべてを静的ライブラリとして「最初から」再コンパイルする必要があります。

これは単に、シーケンス内にあるライブラリごとに一連のプロジェクトを作成し、出力タイプを静的ライブラリに設定する必要があることを意味します。

その後、ライブラリ自体の間のライブラリの依存関係を排除する必要があります(つまり、一部のプロジェクトの出力を別のプロジェクトにリンクする必要があります。たとえば、「libpng」ライブラリで「libzip」を使用する場合は、最初に「libzip」をコンパイルしてリンクする必要があります。その出力(静的ライブラリ)を「libpng」プロジェクトに出力します。

最終的には、プラットフォーム用にコンパイルされた静的ライブラリの大きなセットがあり、プロジェクトで使用できます。


また、言うまでもなく、グーグルをもっと慎重に試してください。誰かがこれを行ったと確信しており、おそらくプラットフォーム用の.libファイルのパッケージをダウンロードする必要があります(ライブラリの「dev」バンドルには、適切な.dllファイルとペアになったインポートライブラリしか含まれていないことがよくありますが、あなたのような愛好家はたくさんいます:)

于 2010-06-02T10:56:12.497 に答える