.png ファイルの使用時に正しく実行されるプログラムがあります。
OpenEXRをサポートするように変換しようとしています。
プログラムは macports g++-mp-4.5 でコンパイルされ、macports の openexr1.7 に対してリンクされます。コンパイル行の関連部分:
/opt/local/bin/g++-mp-4.5 ... -I/opt/local/include/OpenEXR -I/opt/local/include/OpenEXR file.cc ... -L/opt/local/lib - lIlmImf -lHalf ...
実行すると、exr ライブラリを呼び出そうとすると、次のようになります。
libc++abi.dylib: 例外をスローして呼び出された終了
.a ファイル /opt/local/lib/libIlmImf.a /opt/local/lib/libHalf.a とリンクするように変更すると、リンク エラーが発生します。
アーキテクチャ x86_64 の未定義シンボル: "Iex::throwErrnoExc(std::basic_string, std::allocator > const&)"、次から参照: Imf::(anonymous namespace)::writeLineOffsets(Imf::OStream&, std::vector > const&) in libIlmImf.a(ImfOutputFile.o) Imf::StdIFStream::StdIFStream(char const*) in libIlmImf.a(ImfStdIO.o) Imf::(anonymous namespace)::checkError(std::basic_istream >&, long) libIlmImf.a(ImfStdIO.o) 内
検索した結果、これ (*x86_64 の未定義のシンボル*) は Linux スタイルの Mac 開発に共通の問題であり、openexr に固有のものではないようです。しかし、さまざまな投稿を読んだ後でも、解決策が何であるかはまだわかりません!
これは正確な問題に関する投稿ですが、解決策は私が理解できるほど詳細に説明されていません: http://lists.nongnu.org/archive/html/openexr-devel/2011-08/msg00007.html