C++使用boost python import 其他路径的模块

37 篇文章 0 订阅

作者:华亮    http://blog.csdn.net/cedricporter


我们在boost库下,我们很容易可以实现C++与Python的混合编程,现在我们想在C++下使用boost::python::import其他路径下的模块,我们该如何是好呢?

	try
	{
		using namespace boost::python;

		object main_module = import( "__main__" );
		object main_namespace = main_module.attr( "__dict__" );
		//object sys = import( "sys" );
		object ignored = exec( 
			"import sys\n"
			"sys.path.append('./python')\n", main_namespace );
		//ignored = exec( "print sys.path", main_namespace );
	}
	catch ( ... )
	{
		PyErr_Print();
	}

上述,我们使用Python的sys模块来帮助我们注册当前目录下的python目录到python的import目录,于是我们就可以引用其他路径下的模块了。

import sys
sys.path.append('./python')


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Boost.Python实现PythonC++之间的交互,需要完成以下几个步骤: 1. 安装Boost库:首先需要安装Boost库,可以从官网下载源码包并编译安装。安装完成后,在编译C++程序时需要链接Boost库。 2. 编写C++代码:在C++代码中,需要使用Boost.Python库提供的接口将C++代码暴露给Python解释器。例如,可以使用BOOST_PYTHON_MODULE宏定义将一个C++类暴露给Python解释器,示例代码如下: ```c++ #include <boost/python.hpp> class HelloWorld { public: void say_hello() { std::cout << "Hello, world!" << std::endl; } }; BOOST_PYTHON_MODULE(helloworld) { boost::python::class_<HelloWorld>("HelloWorld") .def("say_hello", &HelloWorld::say_hello); } ``` 在上面的代码中,定义了一个名为HelloWorld的C++类,其中包含一个名为say_hello的成员函数。使用BOOST_PYTHON_MODULE宏定义将这个类暴露给Python解释器,并定义了Python中可以调用的接口。 3. 编写Python代码:在Python代码中,可以使用import语句导入C++代码中暴露的类和函数。示例代码如下: ```python import helloworld h = helloworld.HelloWorld() h.say_hello() ``` 在上面的代码中,导入了名为helloworld的模块,可以使用模块中暴露的HelloWorld类。创建一个HelloWorld对象,并调用其say_hello方法。 4. 编译和运行程序:将C++代码编译成动态链接库,并将Python代码和动态链接库放在同一个目录下。使用Python解释器运行Python代码,即可看到C++代码和Python代码之间的交互效果。 以上就是使用Boost.Python实现PythonC++之间交互的基本步骤,具体实现还需要根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值