私は最近、MacPorts を使用して Boost をインストールしました。これは、C++ に Python を埋め込むことを目的としています。次に、Python の Web サイトにある例を使用して、Xcode を正しく構成したかどうかを確認することにしました。
#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: attribute name must be string, not 'str'" になります。疑わしいことに、プレースホルダーのように聞こえます。
Googleで調べましたが、運がありません。
Leopard で Boost v1.39、Python 2.5、および GCC 4.0 を使用しています。