python与C++的互操作
来源:互联网 发布:java json数组转list 编辑:程序博客网 时间:2024/06/10 21:25
python中使用c++的模块,讲c++的动态链接库文件直接import进来就可以了。在windows下需要将dll文件扩展名修改为.pyd。在linux/unix下直接使用.so就可以了。 c++编写的python的模块都是动态链接库文件。 这是在windows下变使用普通函数编写的关键代码: static PyObject *ge(PyObject * self, PyObject * args){ std::string sts; sts = "help me"; return Py_BuildValue("s", sts.c_str() );}//这是处理函数static PyMethodDef allmehod[]={ {"ge", ge, METH_VARARGS}, {NULL, NULL} };//将函数对应给一个python方法#ifdef BUILD_DLL #define DLL_EXPORT __declspec(dllexport)#else #define DLL_EXPORT __declspec(dllimport)#endifextern "C"DLL_EXPORT void initpyt(){ PyObject *m, *d; m = Py_InitModule("pyt", allmehod); d = PyModule_GetDict(m);}//建立函数字典,暴露函数 在windows下面由于PE结构的问题编写动态连接库真的不是太舒服。不过在linux下就好多了,不需要导入导出的处理了,呵呵。 不过c++的准标准库中的boost::python库,更进一步的优化了这一过程。 #include<string>#include <boost/python.hpp>using namespace boost::python;#pragma comment(lib, "boost_python.lib")//这里在windows将boost_python.lib链接进来,在linux下去掉这一句在链接时加入静态库boost_python.a的路径就可以了std::string strtmp;char const* fe(){ strtmp ="返回的数据... : "; return strtmp.c_str();}BOOST_PYTHON_MODULE(ge){ def("fe", fe);}呵呵,boost确实很好,很强大!!!
- python 中的赋值操作,与c/c++的对比
- Python 与 C/C++ 互操作资源汇总
- python与C++的互操作
- OCaml与C的互操作
- Go与C语言的互操作
- Go与C语言的互操作
- Go与C语言的互操作
- Go与C语言的互操作
- Go与C语言的互操作
- Go与C语言的互操作
- python 与 mysql 互操作
- python与c的集成
- python与c的集成
- python与C的比较
- C++与Python的互操作(pybind11): 从零开始
- 汇编与C互操作
- C & Python 文件操作
- C++/CLI中MFC与.NET的互操作
- 会死人的……
- 做完毕设的小总结
- 汇编折半查找法
- 开发语言排行榜
- 汇编递归求N!
- python与C++的互操作
- 在 Javascript 中读取 C# Dataset 实例(转)
- 喜欢C++的真的好多都喜欢python呀
- 讨人喜欢的26个原则
- 新概念英语四文本
- linux&unix软件的安装方式 汇集
- ZwSetSystemInformation的SystemLoadAndCallImage 加载驱动的缺陷
- CSDN又改版了……连个招呼都不打
- VisualFC 0.80 beta1 Released!