이 작업을 수행하는 데 문제가 있습니다. 내가 붙어있는 것은 C++로 작성된 모듈을 임베디드 Python 인터프리터에 노출시키는 것이다.C++ 게임 스크립팅을위한 내장 파이썬 설정
저는 boost :: python을 사용하고 있습니다. 그러나 설명서가 부족한 것처럼 보이기 때문에 내가 이것을 위해 무엇을해야할지 모르겠습니다.
내가 원하는 것은 BOOST_PYTHON_MODULE로 일부 C++ 코드를 노출 한 다음 해당 응용 프로그램에서 에 액세스하는 것입니다. 그러나 나는 그것을 가져올 수 없습니다.
#include <python/interpreter.hpp>
bp::object blag() {
return bp::str("Thingy");
}
BOOST_PYTHON_MODULE(modthingy) {
bp::def("blag", &blag);
}
Interpreter::Interpreter() {
Py_UnbufferedStdioFlag = 1;
Py_Initialize();
try {
init_module_modthingy();
} catch (bp::error_already_set) {
PyErr_Print();
}
main_module = bp::import("__main__");
main_namespace = main_module.attr("__dict__");
}
하지만 그건 오류 AttributeError: 'NoneType' object has no attribute '__dict__'
를 인쇄하고 나중에 모듈을 가져올 수 없습니다 : 가장 가까운 (단지 관련 부분)를 보인다 내가있어.
어떻게 구성해야합니까?
편집 : 좋아, 허용 대답의 방법 중 하나 내가 가진 가장 가까운 그래서 : 내가하고 싶은대로
PyImport_AppendInittab("modthingy", &PyInit_modthingy);
Py_Initialize();
그러나,이, 내 경우에 특히 유용하지 않는 것 초기화 기능 후에 모듈을 추가/가져올 수 있어야합니다. 나는 즉, 몇 가지로 볼거야 :
- 을 내가 파이썬에서 작업 파이썬 2 제안 된 접근 방식을 얻을 수 있다면 내가 잘 모든 명명 요구하는 내 게임을 구성 할 수있는 경우 3
- 참조하십시오 Py_Initialize 전 모듈
이 게시물을 내 결과와 함께 업데이트 할 예정입니다.
그냥 포기했다고 말하고 싶습니다. 파이썬은 실제로 내가 사용하고자하는 것에 대해 너무 잘 작동하지 않는 것 같습니다. boost.python에 대한 문서는 정말로 오래되었습니다. (비록 지난 12 년 동안 라이브러리가 거의 변경되지 않았기 때문에 믿을 수 있지만) 웹에 거의 모든 예제가 있습니다. 나는 이제 더 많은 전용 스크립팅 언어 인 chaiscript와 angelscript를 조사하고있다. 그들은 내 요구에 더 잘 어울리는 것처럼 보입니다. 편집 :하지만 미래에 python 확장 기능을 작성하기 위해 boost.python을 사용하게 될 것입니다. 이것이 정말 빛나는 곳입니다. – Jagoly