Ich habe eine cython
Datei random.pyx
wie folgt aus:Kann ich die dynamische Bibliothek mit Cython in C++ kompilieren?
cdef public int get_random_number():
return 4
mit setup.py
wie folgt aus:
from distutils.core import setup
from Cython.Build import cythonize
from distutils.extension import Extension
extensions = [Extension("librandom", ["random.pyx"])]
setup(
ext_modules = cythonize(extensions)
)
Dann bekomme ich eine dynamische Bibliothek librandom.so
, jetzt habe ich diese so
Datei in C verwenden möchten ++ statt Python.
#include <stdio.h>
#include "random.h"
int main() {
printf("%d\n",get_random_number());
return 0;
}
jetzt ich Fehler wie diese zu erhalten, wenn ich g++ -o main main.cpp -lrandom -L. -Wl,-rpath,"\$ORIGIN"
kompilieren:
In file included from main.cpp:2:0:
random.h:26:1: error: ‘PyMODINIT_FUNC’ does not name a type
PyMODINIT_FUNC initrandom(void);
Sie müssen Python-enthält sowie Python-Bibliothek zu Ihrem Build hinzuzufügen, können Sie auch nicht die Funktionalität des cython Modul verwenden, ohne sie zuerst innitializing. Diese Antwort füllt die Lücke aus dem Cython-Lernprogramm und könnte für Sie hilfreich sein: https://stackoverflow.com/a/45424720/5769463 – ead