擅长:python、mysql、java
<p>我遇到了一个非常相似的问题,调试了库,挖掘了源代码并找到了问题的原因。在</p>
<p>这是因为OpenEXR库试图使用SysV信号量,而实际上并不支持它们。EXR的<code>CMakeLists.txt</code>中有一行,它查找{<cd2>}的存在,以决定是否应该在支持库中使用它。在</p>
<p>然而,Darwin只将信号量作为一个遗留问题而包含,<code>sem_init()</code>将始终返回<code>ENOSYS</code>,这意味着它没有实现。这会导致信号量构造函数在其构造函数中引发异常,该异常在尝试解析EXR头时触发。在</p>
<p>解决方案只需编辑文件<code>ilmBaseConfig.h</code>,并将信号量行改为:</p>
<pre><code>#undef HAVE_POSIX_SEMAPHORES
</code></pre>
<p>然后重建并重新安装。在</p>
<p>然后EXR库将使用它自己的信号量实现,EXR加载将正常工作。在</p>