Swig python包装器未加载/链接符号
我正试图将一个作为动态库(带有开发头)提供的库包装到python中,以便与现有应用程序一起使用。我已经创建了我的.I文件,该文件编译时不会出现问题,但是当我尝试链接ndipy_wrap.o和libndi.dylib文件时,会收到一些关于找不到符号的警告 运行Swig python包装器未加载/链接符号,python,c++,swig,Python,C++,Swig,我正试图将一个作为动态库(带有开发头)提供的库包装到python中,以便与现有应用程序一起使用。我已经创建了我的.I文件,该文件编译时不会出现问题,但是当我尝试链接ndipy_wrap.o和libndi.dylib文件时,会收到一些关于找不到符号的警告 运行 ld-bundle-flat\u名称空间-undefined suppress-o\u ndipy.so ndipy\u wrap.o libndi.4.dylib 意味着我从链接器中获得了一个干净的出口,尽管尝试将模块加载到python中
ld-bundle-flat\u名称空间-undefined suppress-o\u ndipy.so ndipy\u wrap.o libndi.4.dylib
意味着我从链接器中获得了一个干净的出口,尽管尝试将模块加载到python中会导致:
import ndipy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/d5/Projects/ndipy/ndipy.py", line 15, in <module>
import _ndipy
ImportError: dlopen(/Users/d5/Projects/ndipy/_ndipy.so, 2): Symbol not found: __Z14NDIlib_destroyv
Referenced from: /Users/d5/Projects/ndipy/_ndipy.so
Expected in: flat namespace
导入ndipy
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/Users/d5/Projects/ndipy/ndipy.py”,第15行,在
导入复制
ImportError:dlopen(/Users/d5/Projects/ndipy/\u ndipy.so,2):未找到符号:\uuuu Z14NDIlib\u destroyv
引用自:/Users/d5/Projects/ndipy/\u ndipy.so
应为:平面命名空间
我现在有点不知所措,盯着它看了好几个小时,我觉得在我的搜索中,我看不见树木,也看不见树木
多谢各位,
戴夫
编辑添加:us of-undefined suppress是一个类似解决方案的建议,尽管我目前无法找到它!删除此选项会导致未找到架构x86_64的ld:symbol为什么在链接阶段使用“-undefined suppress”?如果删除该行,是否会出现类似错误?很抱歉,我应该将其包含在正文中,在搜索类似情况时,这是建议之一,删除它会导致许多未找到的符号错误Perhaps libndi.4.dylib依赖于您未链接的其他库?不幸的是,LD未找到列出的唯一符号是libndi公开的符号。在libndi.4.dylib上运行nm显示这些符号也由库导出。一直以来,我一直在努力研究这个问题,我想我最终会建立一个C++库,它与LIbnDi交互,并抽象出一些功能。这是更多的工作,但我认为它会产生更可靠的结果。为什么在链接阶段使用“-undefined suppress”?如果删除该行,是否会出现类似错误?很抱歉,我应该将其包含在正文中,在搜索类似情况时,这是建议之一,删除它会导致许多未找到的符号错误Perhaps libndi.4.dylib依赖于您未链接的其他库?不幸的是,LD未找到列出的唯一符号是libndi公开的符号。在libndi.4.dylib上运行nm显示这些符号也由库导出。一直以来,我一直在努力研究这个问题,我想我最终会建立一个C++库,它与LIbnDi交互,并抽象出一些功能。这是更多的工作,但我认为它将产生更可靠的结果。