2010-09-24 12 views
3

En règle générale, je rai les jours chaque fois que je dois construire des librairies Python sur un Mac. J'ai généralement eu un assez bon succès en utilisant Boost :: Python, et si j'utilise distutils, le plus du temps tout fonctionne correctement.Construire des librairies Python sur un Mac et rencontrer des erreurs plates d'espace de noms

Cependant, je n'ai jamais été capable de comprendre la combinaison exacte de ce qui marche et de ce qui ne marche pas. Plus précisément, j'ai souvent rencontré le problème redouté d'un symbole qui n'a pas été trouvé parce que la bibliothèque que j'essaie d'utiliser n'a pas d'espace de noms plat. J'ai essayé de passer à la version MacPorts de Python, puis d'utiliser uniquement des bibliothèques MacPorts, et pas de dés.

Le problème le plus récent que j'ai rencontré est un outil que j'ai besoin d'utiliser qui dépend de la bibliothèque OpenCV, qui à son tour dépend de la bibliothèque FFMPeg (en fait, les deux sont). Tout compile, mais quand j'importe "MYLIB", j'obtiens le symbole _pix_fmt_info introuvable dans l'espace de noms. Je fais un DYLIB_LIBRARY_PRINT pour voir toutes les librairies chargées, et bien sûr libavformat, libavcodec, libavutil et libswscale sont chargés.

Alors, voici mes questions. La question spécifique, quelqu'un a-t-il une idée de ce qui pourrait se passer ici? Ai-je besoin de construire libffmpeg à la main? Est-ce que je fais quelque chose de vraiment stupide comme oublier une bibliothèque (j'ai vérifié, et je ne pense pas que je suis ..)

Plus généralement, y a-t-il une bonne approche pour traiter le problème d'espace de noms plat? Dois-je toujours m'inquiéter des bibliothèques incluses? Est-ce que quelqu'un a une bonne recette pour faire fonctionner les choses?

Parfois, je ne manquez pas le monde de Linux ..


modifier


Désolé, il semble que c'était ma propre stupidité en faute. Je n'ai pas compris le problème exact, mais il semble que le symbole non lié appartient à une bibliothèque différente de celle que je pense (c'est-à-dire pas libffmpeg). Cependant, je suis toujours curieux de connaître les expériences des autres avec des espaces de noms plats.

Répondre

0

Je l'ai vu cette question quand je compile les liaisons Python « C » avec l'option

-fvisibility=hidden parameter 

sur Mac OS X

Je suis d'accord est que, ce qui est similaire à problème d'espace de noms plat.