3

原則として、Mac で Python ライブラリをビルドしなければならないときはいつでも、その日を後悔しています。私は通常、Boost::Python を使用してかなりの成功を収めています。また、distutils を使用すると、ほとんどの場合、すべてが正しく機能します。

ただし、機能するものと機能しないものの正確な組み合わせを理解することはできませんでした。具体的には、使用しようとしているライブラリにフラットな名前空間がないために、シンボルが見つからないという恐ろしい問題に遭遇することがよくあります。Python の MacPorts バージョンに切り替えてから、MacPorts ライブラリのみを使用し、サイコロは使用しませんでした。

私が遭遇した最新の問題は、OpenCV ライブラリに依存するツールを使用する必要があることです。このツールは、さらに FFMpeg ライブラリに依存しています (実際には両方ともそうです)。すべてがコンパイルされますが、'import MYLIB' を実行すると、シンボル _pix_fmt_info がフラットな名前空間に見つかりません。DYLIB_LIBRARY_PRINT を実行して、ロードされたすべてのライブラリを表示し、十分な libavformat、libavcodec、libavutil、および libswscale がすべてロードされていることを確認します。

それで、ここに私の質問があります。具体的な質問は、ここで何が起こっているのか知っている人はいますか? libffmpeg を手動でビルドする必要がありますか? 私はライブラリを忘れるなど、本当にばかげたことをしていますか (確認しましたが、そうではないと思います..)

より一般的には、フラットな名前空間の問題に対処するための良いアプローチはありますか? どのライブラリが含まれているか常に心配する必要がありますか? 物事を機能させるための良いレシピを持っている人はいますか?

ときどき Linux の世界が恋しくなることがあります。


編集


申し訳ありませんが、ここでの過失は私の愚かさのようです。正確な問題はわかりませんが、見つからないシンボルは私とは異なるライブラリに属しているようです (つまり、libffmpeg ではありません)。

ただし、フラットな名前空間に関する他の人々の経験にはまだ興味があります。

4

1 に答える 1

0

オプションを指定して「C」pythonバインディングをコンパイルすると、この問題が発生しました

-fvisibility=hidden parameter

マックOSXで

私が理解しているのは、これはフラットな名前空間の問題に似ているということです。

于 2010-09-24T23:34:20.797 に答える