2017-09-28 2 views
0

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); 
+1

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

Antwort

Verwandte Themen