Python 我可以在c+;中使用cython进行动态库编译吗+;?
我有一个Python 我可以在c+;中使用cython进行动态库编译吗+;?,python,c++,dll,cython,Python,C++,Dll,Cython,我有一个cython文件random.pyx如下: cdef public int get_random_number(): return 4 from distutils.core import setup from Cython.Build import cythonize from distutils.extension import Extension extensions = [Extension("librandom", ["random.pyx"])] setup(
cython
文件random.pyx
如下:
cdef public int get_random_number():
return 4
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)
)
像这样使用setup.py
:
cdef public int get_random_number():
return 4
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
,现在我想用c++中的so
文件代替python
#include <stdio.h>
#include "random.h"
int main() {
printf("%d\n",get_random_number());
return 0;
}
尝试将您的c代码更改为:
#include <stdio.h>
#include "Python.h"
#include "random.h"
int main() {
Py_Initialize();
PyInit_random(); // see "random.h"
int r = get_random_number();
Py_Finalize();
printf("%d\n", r);
return 0;
}
#包括
#包括“Python.h”
#包括“random.h”
int main(){
Py_初始化();
PyInit_random();//参见“random.h”
int r=get_random_number();
Py_Finalize();
printf(“%d\n”,r);
返回0;
}
请注意,要运行可执行文件,您无法摆脱python环境
另请参见您需要将python包含和python库添加到您的构建中,而且如果不先初始化cython模块,您就不能使用cython模块的功能。这个答案填补了cython教程的空白,可能会对您有所帮助: