Я недавно установил Повышение с помощью MacPorts с намерением сделать некоторое встраивание Python в C++. Я затем решил проверить, настроил ли я XCode правильно с примером, найденным на веб-сайте Python:
#include <boost/python.hpp>
using namespace boost::python;
int main( int argc, char ** argv )
{
try
{
Py_Initialize();
object main_module(handle<>(borrowed(PyImport_AddModule("__main__"))));
object main_namespace = main_module.attr("__dict__");
handle<> ignored(PyRun_String("print \"Hello, World\"",
Py_file_input,
main_namespace.ptr(),
main_namespace.ptr()));
}
catch( error_already_set )
{
PyErr_Print();
}
}
Это компилирует правильно, но когда я запускаю его, вызов к attr () выдает исключение, и получающимся сообщением об ошибке является "TypeError: название атрибута должно быть строкой, не 'ул.'". Который подозрительно походит на заполнителя.
Я искал его на Google, но никакой удаче.
Я использую Повышение v1.39, Python 2.5 и GCC 4.0, на Leopard.
Ваш код работал у меня со следующей конфигурацией:
Скомпилировано с помощью:
g++ -I/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2. 6/ -I/usr/local/boost/1_41_0/include -L/usr/local/boost/1_41_0/lib/ -boost_python -L/usr/lib/python2.6/config -lpython2.6 test.cpp