相关疑难解决方法(0)

SWIG和Python3导入错误

我用C编写了一个库.我使用SWIG为Java,Python等生成绑定.我设法为两种语言编写自定义类型映射等等.我还设法使用我的库(一个自定义协议)并与我在C中编写的服务器进行通信,使用我用Java编写的客户端,以及我用Python编写的客户端.

最近,我遇到了一个多重继承问题,我找到了一个聪明的解决方案.但是,当尝试使用Python 3复制错误时,错误消失了(可能在版本3中解决了).事实是,相同的代码,相同的项目和相同的源将不会运行调用python3二进制文件,但它可以调用python2.7二进制文件.

我收到消息:

ImportError: dynamic module does not define init function (PyInit__pytellapic)
Run Code Online (Sandbox Code Playgroud)

我已经阅读了SWIG文档可能意味着什么,但错误略有不同:

import example
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: dynamic module does not define init function (init_example)
Run Code Online (Sandbox Code Playgroud)

说:

当为共享对象文件指定错误名称时,几乎总是会导致此错误.例如,如果您创建了一个文件example.so而不是_example.so,则会出现此错误.或者,如果模块的名称与%module指令提供的模块名称不一致,则可能会出现此错误.仔细检查接口以确保模块名称和共享对象文件名匹配.导致此错误的另一个可能原因是在创建扩展模块时忘记将SWIG生成的包装器代码与应用程序的其余部分链接起来.

老实说,我认为这个可能的原因不适用于我的模块,因为它应该是2.7和3版python的错误,而不仅仅是Python 3.

我很感激任何建议,但考虑到SWIG似乎是一个过时的项目,我可能会继续使用Python 2.7与提到的"黑客".

最好的祝福,

python swig python-3.x

5
推荐指数
1
解决办法
2659
查看次数

标签 统计

python ×1

python-3.x ×1

swig ×1