최근에 MacPorts를 사용하여 Boost를 설치했으며 C++에서 일부 Python 임베딩을 수행했습니다.Mac OS X의 Boost.Python : "TypeError : 속성 이름은 문자열이어야합니다"
#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 : 특성 이름은 문자열이어야하며 'str'이 아니어야합니다.". 의심스럽게 자리 표시자인 것처럼 들립니다.
Google에서 찾았지만 운이 없습니다.
나는 Leopard에서 Boost v1.39, Python 2.5 및 GCC 4.0을 사용합니다.
뭐가 잘못되었나, 코드가 작동하는 것 같습니다 (win/lin, py3, gcc/vs2005/10, 부스트 42/43) 사용중인 모든 버전에서 사용중인 OS 버전이 공식적으로 지원되는지 여부를 확인 했습니까? – pprzemek
파이썬, 부스트, GCC 4는 모두 공식적으로 OS X에서 지원됩니다. 그러나 Boost.Python이 구체적인지는 알기 어렵습니다. 그들의 문서는 시대에 뒤진 것으로 보이며, OS X 10.3에서 Python 2.3 및 GCC 3.3을 사용했지만 Leopard는 작동하지 않는 것으로 보입니다. 아마도 그것이 문제입니다. 나는 그것을 들여다 볼 것이다. –