我在将值分配给包含OpenEXR定义的一半类型的Imf :: Rgba结构时遇到问题。似乎存在一个链接器错误,涉及从浮点数到一半的转换。

Linking CXX executable graphics-env
Undefined symbols for architecture x86_64:
  "half::_eLut", referenced from:
      half::half(float) in main.cpp.o
  "half::convert(int)", referenced from:
      half::half(float) in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [graphics-env] Error 1
make[1]: *** [CMakeFiles/graphics-env.dir/all] Error 2
make: *** [all] Error 2


我相信这是Windows上的常见问题,需要定义OPENEXR_DLL。但是,这在我在OS X上编译时不起作用。我尝试以相同的结果链接到libIlmImf.dylib和libIlmImf.a。使用的OpenEXR版本是2.2.0,并使用Homebrew安装。

最佳答案

这些符号在half.hIlmBase中定义。

您应该链接到libHalf.dylib

关于c++ - 分配“半”类型时,OpenEXR链接器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30153543/

10-12 01:32