2015-09-09 3 views
0

Я скомпилировал исходный код python для 32bit и пытаюсь использовать API Py_Initialize() для инициализации интерпретатора python в моем приложении на C++.
Py_Initialize() ведет к аварии ниже. Пожалуйста, помогите мне, как решить эту проблему.C++ Python-интерпретатор - Py_Initialize сбой

Am компиляции моего кода, как показано ниже:

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) 

ответ

2

Я не совсем уверен, что вы хотите сделать, так как вы не предоставили код на PythonInterpreter.cpp.

Следующий код компилируется с помощью командной строки:

г ++ -I/USR/включать/python2.7/-o Foo foo.cpp -lpython2.7

#include "Python.h" 
int main() 
{ 
    Py_Initialize(); 
    return 0; 
} 
+0

утра просто делает то же самое вещь. Но он падает. И FYI, я скомпилировал исходный код python для 32-битной архитектуры. С 64-битным, даже я могу успешно запустить код –

+0

Я скомпилировал исходный код python с 32-битной архитектурой. двоичный код python, созданный как часть компиляции, также вызывает такую ​​же ошибку. –