Я пытаюсь импортировать библиотеку из 2 функций, которые я написал на C, в свой код на 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.так что * .o
теперь у меня есть все необходимые файлы для использования моих функций C в python.
проблема заключается в том, что когда я пытаюсь импортировать эту библиотеку в командную строку 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 ();
Спасибо всем, кто может помочь.