OSX链接程序:x86_64的未定义符号

时间:2013-06-28 13:33:17

标签: macos gcc linker osx-mountain-lion openexr

我有一个在使用.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&)”,引自:        在libIlmImf.a中的imf::(匿名命名空间):: writeLineOffsets(Imf :: OStream&,std :: vector> const&)(ImfOutputFile.o)        libflmImf.a中的Imf :: StdIFStream :: StdIFStream(char const *)(ImfStdIO.o)        在libIlmImf.a(ImfStdIO.o)中的Imf::(匿名命名空间):: checkError(std :: basic_istream>&,long)

搜索之后,似乎这个(* x86_64 *的未定义符号)是linux风格的mac开发的常见问题,并且看起来并不具体 对openexr。但在阅读各种帖子后,我仍然不明白解决方案是什么!

以下是关于确切问题的帖子,但是我没有详细解释解决方案以便我理解: http://lists.nongnu.org/archive/html/openexr-devel/2011-08/msg00007.html

0 个答案:

没有答案