boost python嵌入_C++嵌入Python的应用Boost.Python

我正在编写一个Windows DLL,用于另一个程序,我希望在Python脚本中有一些C++函数调用Python函数。C++函数位于实例化对象中;当对象调用脚本时,脚本也应该能够调用该对象的函数。我一直在努力做到这一点Boost.Python但是文件Boost.Python我对如何实现这一点非常模糊,我发现的一些教程相当于“。。。然后画出猫头鹰的其他部分。”

(我也听说过一些关于使用pybind的东西,但在这个开发阶段,我只限于MSVC 9.0和pre-C11)。为了达到我所处的位置,这是一段相当艰难的上坡路,这并不遥远。在

因此,基本上,我(非常粗略地)沿着以下路线进行观察:BOOST_PYTHON_MODULE(PythonModule)

{

class_("Functions", boost::python::no_init)

.def("foo", &CPythonModule::foo)

}

void CPythonModule::foo(string message)

{

some_function_that_prints_things(message);

}

int main_module_method()

{

Py_Initialize();

???

call_python_script_function(script.py, bar);

}

然后是剧本:

^{pr2}$

我假设我需要把C++对象的实例传递给Python脚本,理想的是脚本或Python解释器是一个对象,在DLL卸载之前我会一直保存它。我对调用脚本的具体细节也很模糊。我的搜寻毫无结果,令人沮丧。在

编辑:

通过一些费解的工作,我最大的未知数是如何将对象的当前实例发送到Python脚本并调用该对象的函数,而不必在Python中创建新对象。

通过这一行,我可以使对象不可初始化:class_("Functions", boost::python::no_init)

但是,我也不能调用类中的函数,因为Python需要一个类的实例来调用它们!如果对象创建类的自己的副本,它也会在死后调用该类的析构函数,从而导致运行DLL的主程序出现各种问题。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值