0
私はこのようなcython
ファイルrandom.pyx
あります。その後、私は今、私はCで、このso
ファイルを使用する場合は、動的ライブラリlibrandom.so
を得る++の代わりに、C++でcythonで動的ライブラリコンパイルを使用できますか?
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
をPython。私はg++ -o main main.cpp -lrandom -L. -Wl,-rpath,"\$ORIGIN"
をコンパイルするとき
#include <stdio.h>
#include "random.h"
int main() {
printf("%d\n",get_random_number());
return 0;
}
今私はこのようなエラーが出る:にあなたのCコードを変更する
In file included from main.cpp:2:0:
random.h:26:1: error: ‘PyMODINIT_FUNC’ does not name a type
PyMODINIT_FUNC initrandom(void);
を参照してください、また、それを最初にinnitializingせずcythonモジュールの機能を使用することはできません。その答えは、cythonチュートリアルのギャップを埋め、あなたに役立つかもしれません:https://stackoverflow.com/a/45424720/5769463 – ead