Ich versuche, einen Wrapper für eine C-Bibliothek mit Cython zu schreiben.Cython: Kompilieren Sie alle C Abhängigkeiten
Ich habe eine einfache Pyx-Datei erstellt, die meine C-Routine verwendet.
cdef extern from "sel.h":
void parse_file(const char *file)
cpdef void main(str file):
file_pybyte = file.encode('UTF-8')
cdef char*c_file = file_pybyte
parse_file(c_file)
Die sel.c
Datei importiert eine C-Bibliothek befindet sich in src
Verzeichnis, das Hunderte von Dateien hat.
// sel.c
#include "src/clib/finder.h"
#include "src/clib/core/core.h"
#include "src/clib/encoding/encoding.h"
Diese ersten Header-Dateien haben eine Menge anderer enthält in ihnen.
Jedesmal, wenn ich versuche, eine kompilierte Bibliothek laufen Ich erhalte eine Fehlermeldung: ist
Symbol not found: _type_attribute
Expected in: flat namespace
Die type_attribute
Funktion innerhalb src/clib/finder.h
Datei importiert.
Wie kann ich automatisch alle Abhängigkeiten von einer C-Bibliothek finden und kompilieren?
Mein Setup Config sieht wie folgt aus:
cythonize([Extension("*",
["lib/*.pyx",
"lib/sel.c",
],
include_dirs=[
'lib/src/clib/',
'lib/src/clib/include', ],
)])
Ich habe versucht, alle C-Dateien in einer Config-Liste, aber es funktioniert nicht, da diese Bibliothek eine Menge plattformspezifische Dateien.
Würden Sie besser Ihre C-Bibliothek als eine separate Bibliothek mit eigener Make-Datei behandeln, die Sie gegen verknüpfen, anstatt zu versuchen, es zu kompilieren mit deine Python-Erweiterung? – DavidW