Динамическая библиотека вызывает ошибку при добавлении в файл setup.py (в Mac OS.X)

У меня есть динамическая библиотека, встроенная в cpp, которая на самом деле работает в cpp, но вызывает сильную головную боль, когда я пытаюсь импортировать ее из класса python. Ошибка появляется просто, когда я добавляю lib в мой файл setup.py. Ошибка:

MacBook-Pro-de-Marcelo-Salloum:python_cpp_interface marcelosalloum$ python userect.py
Traceback (most recent call last):
File "userect.py", line 2, in <module>
from rectangle import Rectangle
ImportError: dlopen(/Users/marcelosalloum/Projects/CppOpenCV/python_cpp_interface/rectangle.so, 2): Symbol not found: __XEatDataWords
Referenced from: /opt/local/lib/libXext.6.dylib
Expected in: /opt/local/lib/libX11.6.dylib
in /opt/local/lib/libXext.6.dylib

Setup.py:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

setup(
name = 'DyCppInterface',
version = '1.0',
author = 'Marcelo Salloum dos Santos',
# The ext modules interface the cpp code with the python one:
ext_modules=[
Extension("rectangle",
sources=["rectangle.pyx", "cpp_rect.cpp"], # Note, you can link against a c++ library instead of including the source
include_dirs=[".","source", "/opt/local/include/opencv", "/opt/local/include"],
language="c++",
# extra_link_args = ['-arch x86_64'],
# extra_link_args = ['-arch i386', '-arch x86_64'],
library_dirs=['/usr/local/lib', 'source'],
runtime_library_dirs=['/Users/marcelosalloum/Projects/CppOpenCV/python_cpp_interface/source'],
libraries=['LibCppOpenCV'])
],
cmdclass = {'build_ext': build_ext},
)

Известно, что этот * .so файл использует библиотеку OpenCV c ++. До добавления этой библиотеки в мою общую библиотеку все работало идеально.

  • Как выяснить, в чем причина ошибки?
  • Стоит ли использовать статическую библиотеку вместо динамической?
  • П.С .: мой DYLD_LIBRARY_PATH = ~ / Проекты / CppOpenCV / python_cpp_interface / source /: / usr / local / mysql / lib /

0

Решение

Благодаря комментариям abarnert я решил проблему обновления и обновления MacPorts. Как заметил Абарнерт, между /opt/local/lib/libXext.6.dylib а также /opt/local/lib/libX11.6.dylib,

Так я и сделал:

$ sudo port selfupdate
$ sudo port upgrade outdated
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]