난 그냥 C에서 첫 파이썬 확장 모듈을 작성하기위한 시도를 시작하고 있고 https://www.tutorialspoint.com/python/python_further_extensions.htmC++ 파이썬 모듈 가져 오기 오류 : "정의되지 않은 심볼 : Py_InitModule3"(Py_InitModule는())
에 제공된 지침 내가 리눅스 오전를 사용하는 민트 18.1, virtualenv 버전에서 파이썬 3.6.1 사용.
첫 번째 단계에서는 필자가 작성하고자하는 Python 모듈의 매우 단순한 버전을 컴파일했습니다. 여기
include <Python.h>
static PyObject* uniqueCombinations(PyObject* self)
{
return Py_BuildValue("s", "uniqueCombinations() return value (is of type 'string')");
}
static char uniqueCombinations_docs[] =
"usage: uniqueCombinations(lstSortableItems, comboSize)\n";
static PyMethodDef uniqueCombinations_funcs[] = {
{"uniqueCombinations", (PyCFunction)uniqueCombinations,
METH_NOARGS, uniqueCombinations_docs},
{NULL}
};
void inituniqueCombinations(void)
{
Py_InitModule3("uniqueCombinations", uniqueCombinations_funcs,
"Extension module uniqueCombinations v. 0.01");
}
및 uniqueCombinations.cpython-36m-x86_64-linux-gnu.so
에 나는 C 코드를 컴파일하는 데 사용했던 setup.py 파일의 코드 : 여기
내 C 코드 놀랍게도
from distutils.core import setup, Extension
setup(name='uniqueCombinations', version='0.01', \
ext_modules=[Extension('uniqueCombinations', ['uniqueCombinations_pythonCmodule_v-0.01_Cg.c'])])
>>> import uniqueCombinations
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: uniqueCombinations.cpython-36m-x86_64-linux-gnu.so: undefined symbol: Py_InitModule3
: 모듈 가져 오기에 제대로로드되지 않습니다 여기Why am I getting this error?
And what should I do to be able to load the compiled module properly?
Py_InitModule3의 암시 적 선언에 대한 경고와 빌드 프로토콜 다음 Py_InitModule (Py_InitModule3가) 더 이상
$ python uniqueCombinations_pythonCmodule_v-0.01_setup.py_Cg.py build
running build
running build_ext
building 'uniqueCombinations' extension
gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include/python3.6m -c uniqueCombinations_pythonCmodule_v-0.01_Cg.c -o build/temp.linux-x86_64-3.6/uniqueCombinations_pythonCmodule_v-0.01_Cg.o
uniqueCombinations_pythonCmodule_v-0.01_Cg.c: In function ‘inituniqueCombinations’:
uniqueCombinations_pythonCmodule_v-0.01_Cg.c:19:5: warning: implicit declaration of function ‘Py_InitModule3’ [-Wimplicit-function-declaration]
Py_InitModule3("uniqueCombinations", uniqueCombinations_funcs,
^
creating build/lib.linux-x86_64-3.6
gcc -pthread -shared build/temp.linux-x86_64-3.6/uniqueCombinations_pythonCmodule_v-0.01_Cg.o -o build/lib.linux-x86_64-3.6/uniqueCombinations.cpython-36m-x86_64-linux-gnu.so
이 댓글의 현재 : 868 번, 투표 없음. 이런 젠장? – Scott