Ich habe einige C-Bibliothek, die ich in Python mit CFFI zugreifen möchte. Nach dem Erstellen der Bibliothek, bekomme ich die 2 Dateien: $HOME/libcint/include/cint.h
und $HOME/libcint/lib/libcint.so
.laden .so Bibliothek mit cffi
Jetzt für die CFFI API-Modus Ich habe versucht:
from cffi import FFI
libcint_dir = os.path.expanduser('~/libcint')
ffibuilder = FFI()
ffibuilder.set_source('_libcint',
r'#include <include/cint.h>',
include_dirs = [libcint_dir],
libraries = ['libcint'],
library_dirs = [os.path.join(libcint_dir, 'lib')],
)
Aber es scheitert die libcint.so
Datei zu finden:
/usr/bin/ld: cannot find -llibcint
Der Weg in libcint_dir
ist richtig, weil ich Sie nicht bekommen Fehlermeldung, dass die Header-Datei nicht gefunden wurde. Auch ich habe es geschafft, die Bibliothek mit dem ctypes
Modul erfolgreich zu verbinden, so dass die libcint.so
selbst in Ordnung sein sollte.
Was mache ich hier falsch?
Wenn ich das richtig mache, dann sind hier 3 Schritte erforderlich. (Bitte korrigieren Sie mich, wenn ich hier etwas verwirrt.)
- libcint Kompilieren
libcint.so
- wodurch man den Aufbau der Python-Wrapper mit CFFI
- das Modul in Schritt 2 in das eigentliche Python-Programm gebaut Import
Mein Problem hier ist über den zweiten Schritt.
Aber ich spreche über Kompilation. Der obige Code soll '_libcint.c' und' _libcint.o' erzeugen. Oder habe ich hier etwas verwirrt? – Feodoran
Ah, vielleicht bin ich verwirrt. Es könnte sein, dass Sie "' libraries = ['cint'] '' anstelle von '' libcint'' sagen müssen. –
Ja, das war's! Scheint seltsam, dass die Header-Datei einen anderen Namen hat. Könnten Sie Ihre Antwort vielleicht neu formulieren? – Feodoran