расширение python c, проблемы с dlopen на mac os

я взял библиотеку, которая распространяется как двоичный lib (.a) и заголовок, написал некоторый код c++ против него и хочет обернуть результаты в модуле python.

я сделал это здесь.

проблема в том, что при импорте этого модуля на Mac и OSX (я пробовал 10.5 и 10.6), я получаю следующую ошибку:

dlopen(/Library/Python/2.5/site-packages/dirac.so, 2): Symbol not found: _DisposePtr
  Referenced from: /Library/Python/2.5/site-packages/dirac.so
  Expected in: dynamic lookup

похоже, что символы, определенные в углеродной структуре, не разрешаются должным образом, но я не уверен что с этим делать. Я поставляю -framework Carbon до distutil.core.Extension ' s

1 ответов


вы собираетесь пнуть себя, когда увидите ответ на этот вопрос! Попробуйте изменить это:

link_args = ['-framework Carbon'] if platform == 'Darwin' else []

для этого:

link_args = ['-framework', 'Carbon'] if platform == 'Darwin' else []

Как только я сделал это изменение, я смог сделать чистую сборку и импортировать модуль сразу:)