我编译了32位的python源代码,并尝试使用Py_Initialize()
API在我的C ++应用程序中初始化python解释器。
Py_Initialize()
导致以下崩溃。请帮我解决这个问题。
正在编译我的代码,如下所示:
g++ ./Pythoninterpreter.cpp -m32 -lpthread -ldl -lutil /usr/lib/libm.a /usr/lib/libpython2.7.a -Xlinker -export-dynamic -I/root/python_tar/Python-2.7.6/Include -I/root/python_tar/Python-2.7.6 -o pythonintepreter
gdb back trace
===============
#0 0x080e8ba7 in va_build_value (format=0x8152ec1 "", va=0xffed7564 "\240\344\027\b\244y\355\377", flags=0) at Python/modsupport.c:521
521 memcpy(lva, va, sizeof(va_list));
(gdb) bt
#0 0x080e8ba7 in va_build_value (format=0x8152ec1 "", va=0xffed7564 "\240\344\027\b\244y\355\377", flags=0) at Python/modsupport.c:521
#1 0x080e8ca6 in Py_BuildValue (format=0x8152ebe "[O]") at Python/modsupport.c:485
#2 0x080a77a7 in mro_implementation (type=0x817e4a0) at Objects/typeobject.c:1605
#3 0x080a3d68 in mro_internal (type=0x4) at Objects/typeobject.c:1636
#4 0x080a4723 in PyType_Ready (type=0x817e4a0) at Objects/typeobject.c:4057
#5 0x080a5186 in PyType_Ready (type=0x817e3c0) at Objects/typeobject.c:4005
#6 0x08088252 in _Py_ReadyTypes () at Objects/object.c:2071
#7 0x080ee3f4 in Py_InitializeEx (install_sigs=1) at Python/pythonrun.c:191
#8 0x080eee32 in Py_Initialize () at Python/pythonrun.c:382
#9 0x080598fe in PythonIntepretor::PythonIntepretor(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned short) ()
#10 0x080595fe in main ()
(gdb)
答案 0 :(得分:2)
由于你没有在PythonInterpreter.cpp上提供代码,我不完全确定你想做什么。
以下代码使用命令行编译:
g ++ -I / usr / include / python2.7 / -o foo foo.cpp -lpython2.7
#include "Python.h"
int main()
{
Py_Initialize();
return 0;
}