作为一般规则,每当我必须在 Mac 上构建 Python 库时,我都会后悔。我在使用 Boost::Python 时通常取得了相当不错的成功,如果我使用 distutils,大多数情况下一切正常。
但是,我一直无法弄清楚哪些有效/哪些无效的确切组合。具体来说,我经常遇到找不到符号的可怕问题,因为我尝试使用的库没有平面命名空间。我尝试切换到 Python 的 MacPorts 版本,然后只使用 MacPorts 库,而不使用骰子。
我最近遇到的问题是我需要使用的工具依赖于 OpenCV 库,而 OpenCV 库又依赖于 FFMPeg 库(实际上,两者都是)。一切都可以编译,但是当我执行“导入 MYLIB”时,我得到了在平面名称空间中找不到的符号 _pix_fmt_info。我执行 DYLIB_LIBRARY_PRINT 来查看所有加载的库,果然 libavformat、libavcodec、libavutil 和 libswscale 都已加载。
所以,这是我的问题。具体问题是,有没有人知道这里可能发生了什么。我需要手动构建 libffmpeg 吗?我是否在做一些非常愚蠢的事情,比如忘记图书馆(我检查过,我不认为我是......)
更一般地说,是否有处理平面命名空间问题的好方法?我是否总是需要担心包含哪些库?有没有人有一个让事情正常工作的好方法?
有时我确实想念 Linux 的世界。
编辑
抱歉,看来这是我自己的愚蠢过错了。我还没有弄清楚确切的问题,但看起来未找到的符号与我属于不同的库(即不是 libffmpeg)。
但是,我仍然对其他人使用平面命名空间的体验感到好奇。