在Mac上构建Python库时遇到平面命名空间错误

在Mac上构建Python库时遇到平面命名空间错误,python,macos,namespaces,boost-python,flat,Python,Macos,Namespaces,Boost Python,Flat,一般来说,每当我不得不在Mac上构建Python库时,我都会感到后悔。我通常在使用Boost::Python时取得了相当好的成功,如果我使用distutils,大多数情况下一切都正常工作 然而,我一直无法找出什么有效/什么无效的确切组合。具体地说,我经常遇到找不到符号的可怕问题,因为我尝试使用的库没有平面名称空间。我尝试切换到Python的MacPorts版本,然后只使用MacPorts库,而不使用骰子 我最近遇到的一个问题是,我需要使用一个依赖于OpenCV库的工具,而OpenCV库又依赖于F

一般来说,每当我不得不在Mac上构建Python库时,我都会感到后悔。我通常在使用Boost::Python时取得了相当好的成功,如果我使用distutils,大多数情况下一切都正常工作

然而,我一直无法找出什么有效/什么无效的确切组合。具体地说,我经常遇到找不到符号的可怕问题,因为我尝试使用的库没有平面名称空间。我尝试切换到Python的MacPorts版本,然后只使用MacPorts库,而不使用骰子

我最近遇到的一个问题是,我需要使用一个依赖于OpenCV库的工具,而OpenCV库又依赖于FFMPeg库(实际上,两者都是)。一切都会编译,但当我“导入MYLIB”时,我会得到在平面名称空间中找不到的符号_pix_fmt_info。我使用DYLIB_LIBRARY_打印来查看加载的所有库,并确保libavformat、libavcodec、libavutil和libswscale都已加载

下面是我的问题。具体的问题是,有人知道这里可能发生了什么吗。我需要手工构建libffmpeg吗?我是否真的做了一些愚蠢的事情,比如忘记了一个图书馆(我检查了一下,我不认为我是…)

更一般地说,有没有处理平面名称空间问题的好方法?我是否总是需要担心包括哪些库?有没有人有一个让事情正常运转的好方法

有时候我真的很怀念Linux的世界


编辑


对不起,看来这是我自己的愚蠢过错。我还没有弄清楚确切的问题,但看起来未找到的符号属于不同的库(即不是libffmpeg)


但是,我仍然对其他人使用平面名称空间的经历感到好奇。

当我使用该选项编译“C”python绑定时,我看到了这个问题

-fvisibility=hidden parameter
在MacOSX上

我的理解是,这类似于平面名称空间问题