0

OpenGLを使用してlibpngを動的にリンクする Mac OS X でプログラムを作成しました。現在、Windowsへの移植を試みています。移植したプログラムを Borland でコンパイルおよびリンクしようとすると、このエラーと、同じであるが「_png_create_read_struct」が異なる約 10 個のエラーが表示されます。

エラー: C:\PROGRAMMING\PNGTEST.OBJ からの未解決の外部 '_png_create_read_struct' 参照

これは、Borland C++ 5.5.1 for Win32で libpng を正しく設定していないためだと思います。png.h と pngconf.h を C:\Borland\BCC55\Include のインクルード フォルダーに入れ、li​​bpng12.dll.a、libpng13.a、libpng13.dll.a、libpng.a、libpng を入れました。 .dll.a、libpng12.def、libpng.def、libpng12.la、および libpng.la を C:\Borland\BCC55\Lib にコピーします (おそらくそれらすべてが必要というわけではありませんが、初心者としてどれがどれかわかりません)。必要であり、必要ありません)。

libpng.obj ファイルもそこに入れる必要がありますか? もしそうなら、どうやってそれを作る/手に入れるのですか?makefile.bc32 を使用して libpng を設定しようとしましたが、セパレーターが見つからないというエラーが発生します。

コマンドラインオプションは次のとおりです。

bcc32 -tW pngtest.cpp -lpng

コードに png.h を含めます。私は何を間違っていますか、またはlibpngを必要としないアルファ付きの画像をロードするより良い方法、またはWindows用のより良いコンパイラさえありますか?

4

3 に答える 3

1

おそらく、Borland よりも MinGW コンパイラの方が適しているでしょう。Borland は、もはや十分にサポートされていません。

DevC++ をダウンロードして、アドオン メカニズムに libpng パッケージがあるかどうかを確認することもできます。DevC++ は、MinGW C/C++ コンパイラを使用する IDE です。

そうは言っても、BCC を使用する必要があると思われる場合は、次のいずれかを行う必要があります。a) Borland で libpng をビルドします。borland を使用する場合は、これが最適なソリューションです。b) libpng.dll からインポート ライブラリを作成するには、Impdef を使用します。borland bin ディレクトリに impdef.exe または imp(something).exe があります。一部のライブラリは、適切なランタイムがないと失敗する原因となる dll にリンクされた静的コードがあるため、impdef で動作しないことに注意してください。

于 2010-10-31T07:38:31.520 に答える
0

まず第一に、サードパーティのライブラリで BC55 のインストールを「汚染」することはありません。プロジェクトを他のビルド環境に移動するのがはるかに難しくなります。プロジェクト内のフォルダーに配置する方がよいでしょう。

次に、リンクしようとしているエクスポート ライブラリが BC55 用にビルドされていることをご存知ですか? 拡張子 .a は、GNU ライブラリ (Borland ライブラリは慣習的に .lib 拡張子を使用) を示唆しています。この場合、別のオブジェクト ファイル形式を使用する BC55 とはリンクしません。このような場合は、試みたようにライブラリを再構築する必要があるため、それを行う際に発生した問題について本当に質問することをお勧めします. 構文が異なるため、makefile は Borland make または GNU make 用に記述されているのでしょうか?

コマンド ライン オプション-lpngは、GCC (libpng.a をリンクする場所) では正しいかもしれませんが、BCC では意味がありません。この-l オプションは、後続のテキストをリンカーに渡すだけです。リンカー コマンド ラインでは、完全な名前を渡す必要があり、拡張子が指定されていない場合は、暗黙的に .lib が追加されます。

于 2010-10-31T07:46:53.527 に答える
0

おそらく、coff2omf を使用してライブラリを変換する必要があります。DLL ファイルは、ほぼ確実に「Microsoft」のCOFF形式です。

インポート ライブラリ変換ツール COFF2OMF.EXEを参照してください。

于 2010-11-03T15:18:35.007 に答える