python - 导入我使用 swig 制作的 python 代码 ac 库
问题描述
我正在尝试将我在 C 中编写的 2 个函数的库导入我在 python 中的代码(使用 swig)。
我有以下文件:OldSystem.h
OldSystem.c
OldSystem.i
我在头文件中有 2 个函数,我在 .i 格式文件中声明了它们:
OldSystem.i:
%module OldSystem
%{
#include "OldSystem.h"
%}
char* readOldParty(char *party_data_file);
void freeOldParty();
现在我想在我的 python 代码中使用这些函数。
我正在尝试使用 swig,因此我使用以下命令创建了必要的包装文件和目标文件 .o:swig -python OldSystem.i
然后我输入:
gcc -c -std=c99 -Wall -Werror -pedantic-errors -DNDEBUG -fPIC -I/usr/local/include/python3.6m *.c
在那之后:
ld -shared -L/usr/local/include/python3.6m -o _OldSystem.so *.o
现在我拥有了在 python 中使用我的 C 函数所需的所有文件。
问题是,当我尝试将此库导入 python 命令提示符(使用import OldSystem
)时,我收到以下错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "OldSystem.py", line 26, in <module>
_OldSystem = swig_import_helper()
File "OldSystem.py", line 22, in swig_import_helper
_mod = imp.load_module('_OldSystem', fp, pathname, description)
ImportError: ./_OldSystem.so: undefined symbol: PyUnicode_FromFormat
有谁知道是什么问题或我应该在哪里寻找?如果需要关于我的 C 代码的任何其他信息来理解它,我将在注释中添加它,但基本上声明在上面(在文件中OldSystem.i
)进行了描述:
char* readOldParty(char *party_data_file);
void freeOldParty();
感谢任何可以提供帮助的人。
解决方案
推荐阅读
- javascript - 为什么我的图片在我的函数中没有显示?我的功能正确吗?
- parsing - YACC 中以 Action 开头的规则的 Shift-Reduce Conflict
- python-3.x - Python 连接到 QuickBooks Online
- r - colnames 函数如何分配新的列名?
- xamarin - 在 root 中启动页面时,Xamarin 不会出现标题
- java - OneToMany 子实体未保存在 save() 上
- python - 如何在 Keras 中获取深度 RNN 的所有中间层的输出
- caching - 是否有 g_dbus 函数来更新非缓存的属性值?
- kubernetes - Ingress 如何支持 JWT 身份验证?
- python - Cassandra Python 准备查询和 MAP 类型