2017-09-28 87 views
0

我有一個cython文件random.pyx這樣的:我可以在C++中使用cython動態庫編譯嗎?

cdef public int get_random_number(): 
    return 4 

setup.py這樣的:

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) 
) 

然後我得到一個動態庫librandom.so,現在我想用這個so文件在C++,而不是蟒蛇。

#include <stdio.h> 
#include "random.h" 

int main() { 
    printf("%d\n",get_random_number()); 
    return 0; 
} 

現在我得到錯誤這樣當我編譯g++ -o main main.cpp -lrandom -L. -Wl,-rpath,"\$ORIGIN"

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

您將需要爲Python庫添加蟒蛇,包括和你的身材,你也可以不先innitializing它使用用Cython模塊的功能。該答案填補了cython教程的空白,可能對您有所幫助:https://stackoverflow.com/a/45424720/5769463 – ead

回答

相關問題