Recentemente ho installato Boost utilizzando MacPorts, con l'intento di eseguire l'incorporamento di Python in C++. Ho quindi deciso di verificare se ho configurato Xcode correttamente con un esempio disponibile sul sito web di Python:Boost.Python su Mac OS X: "TypeError: il nome dell'attributo deve essere stringa"
#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();
}
}
Compila correttamente, ma quando lo lancio, la chiamata a attr() genera un'eccezione, e il messaggio di errore risultante è "TypeError: il nome dell'attributo deve essere string, non" str "". Che sembra sospettosamente un segnaposto.
Ho cercato su Google, ma senza fortuna.
Io uso Boost v1.39, Python 2.5 e GCC 4.0, su Leopard.
Difficile dire cosa non va, il codice sembra funzionare (win/lin, py3, gcc/vs2005/10, boost 42/43) hai controllato se la tua versione del sistema operativo è ufficialmente supportata da tutto ciò che usi? – pprzemek
Python, Boost e GCC 4 sono tutti ufficialmente supportati su OS X. Tuttavia, è difficile stabilire se Boost.Python lo sia. La loro documentazione sembra superata, e sembra che abbia funzionato su OS X 10.3 con Python 2.3 e GCC 3.3, ma nulla su Leopard. Forse è questo il problema Lo esaminerò. –