簡體   English   中英

將動態庫添加到setup.py文件時(在Mac OS.X上)會導致錯誤

[英]Dynamic Library causes error when added to setup.py file (on 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文件使用c ++ OpenCV庫。 在將此庫添加到我的共享庫之前,一切工作正常。

  • 如何找出導致錯誤的原因?
  • 我應該嘗試使用靜態庫而不是動態庫嗎?
  • PS:我的DYLD_LIBRARY_PATH =〜/ Projects / CppOpenCV / python_cpp_interface / source /:/ usr / local / mysql / lib /

感謝abarnert的評論,我解決了更新和升級MacPorts的問題。 正如abarnert所觀察到的,/ /opt/local/lib/libXext.6.dylib / /opt/local/lib/libX11.6.dylib /opt/local/lib/libXext.6.dylib/opt/local/lib/libX11.6.dylib之間存在鏈接問題。

所以我做了:

$ sudo port selfupdate
$ sudo port upgrade outdated

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM