При попытке встроить Python в приложение C ++ с помощью boost::python
я столкнулся с проблемой вызова функций C ++ из синглтона через сценарий Python. Я не уверен, что я на 100% понимаю, как лучше всего выставить синглтон на Python через ускорение, но мне казалось, что это должно сработать.
Я не совсем понимаю, почему я получаю результаты, показанные на картинке ниже. Приветствуются любые указатели.
Я включил только соответствующие части кода, чтобы не раздуваться с вызовами модулей и inits et c .
Python Код:
AssetManager.log("test")
AssetManager.h:
public:
static AssetManager* getInstance();
void logFromScripting(const boost::python::str message) {
std::cout << "[ASSET]: " << boost::python::extract<const char*>(message) << std::endl;
}
private:
static AssetManager* _instance;
AssetManager();
AssetManager. cpp:
boost::python::class_<AssetManager, boost::shared_ptr<AssetManager>, boost::noncopyable>
("AssetManager", boost::python::no_init)
.add_property("getInstance", boost::python::make_function(&AssetManager::getInstance,
boost::python::return_value_policy<boost::python::reference_existing_object>()))
.def("log", &AssetManager::logFromScripting);
AssetManager* AssetManager::getInstance() {
if (!_instance) _instance = new AssetManager();
return _instance;
}
РЕДАКТИРОВАТЬ: Я использую boost_python38-vc142 и python 3.8.0, оба установлены из диспетчера пакетов Nuget в VS19