Boost Python: подпись C ++ не соответствует - PullRequest
1 голос
/ 29 мая 2020

При попытке встроить Python в приложение C ++ с помощью boost::python я столкнулся с проблемой вызова функций C ++ из синглтона через сценарий Python. Я не уверен, что я на 100% понимаю, как лучше всего выставить синглтон на Python через ускорение, но мне казалось, что это должно сработать.

Я не совсем понимаю, почему я получаю результаты, показанные на картинке ниже. Приветствуются любые указатели.

enter image description here

Я включил только соответствующие части кода, чтобы не раздуваться с вызовами модулей и 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

...