我最近使用 MacPorts 安装了 Boost,目的是在 C++ 中嵌入一些 Python。然后我决定使用 Python 网站上的示例检查我是否正确配置了 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'"。这听起来像是一个占位符。
我在谷歌上查了一下,但没有运气。
我在 Leopard 上使用 Boost v1.39、Python 2.5 和 GCC 4.0。