我的编程空间,编程开发者的网络收藏夹
学习永远不晚

c++ python交互之boost.p

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

c++ python交互之boost.p

我们做的项目测试代码用的是python,但是由于开发用的代码是c++,所以很多交互的地方是需要python调用c++的代码。为此我们将c++的函数打包成.so文件被调用。在实际项目中会遇到各种类型的应用,项目组的郭松同学做了比较详细的总结。我将之收集成文,记录如下,便于自己以后翻阅,也为自己博客添砖加瓦,感谢的话就不说了,如果有朋友因为这篇文章受益,请感谢小松同学。
1.普通函数转换
C++代码: class="lazy" data-src.cpp

#include <iostream>
#include <string>
using namespace std;


char const* testA()
{
return "just a test";
}

string testB(string str)
{
cout << str << endl;
return str;
}

void testC(string str,int num)
{
cout << "str is : " << str << endl;
cout << "int is : " << num << endl;
}
python 转换代码: class="lazy" data-src4py.cpp
#include <boost/python.hpp>
#include "class="lazy" data-src.cpp"
using namespace boost::python;
BOOST_PYTHON_MODULE(test) //test是python中模块名字
{
def("a", testA);//将testA映射为a 函数
def("b", testB);
def("c", testC);
}
Makefile文件
因为是第一篇将makefile也展示一下,后面文章将不记录Makefile,因为都一样。/usr/local/boost_143/include/是事先必须准备的库文件。
all:test.so
rm -rf class="lazy" data-src.o class="lazy" data-src4py.o
rm -rf cass_pack_factory_class="lazy" data-src.o cass_pack_Factoryclass="lazy" data-src4py.o

test.so:class="lazy" data-src.o class="lazy" data-src4py.o
g++ class="lazy" data-src4py.o -o test.so -shared -fPIC -I /usr/local/python/include/python2.5/ -I /usr/local/boost_143/include/ -L /usr/local/python/lib/python2.5/ -L
/usr/local/boost_143/lib/ -lboost_python
class="lazy" data-src.o:
g++ -c class="lazy" data-src.cpp -o class="lazy" data-src.o
class="lazy" data-src4py.o:class="lazy" data-src.o
g++ -c class="lazy" data-src4py.cpp -o class="lazy" data-src4py.o -fPIC -I /usr/local/python/include/python2.5/ -I /usr/local/boost_143/include/

clean:
rm -rf class="lazy" data-src.o class="lazy" data-src4py.o
rm -rf test.so
python 调用代码:test.py
import test

test.a()
test.b("just a test!")
test.c("call me string!",7)

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

c++ python交互之boost.p

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

c++ python交互之boost.p

我们做的项目测试代码用的是python,但是由于开发用的代码是c++,所以很多交互的地方是需要python调用c++的代码。为此我们将c++的函数打包成.so文件被调用。在实际项目中会遇到各种类型的应用,项目组的郭松同学做了比较详细的总结。
2023-01-31

C++ python 交互之 pytho

代码片段如下,typedef map smap;//要转换的目的map转换函数string req_update_userprofile_pack_data2(std::string workkey,PyOb
2023-01-31

交互式python shell之ipyt

IPython是Python的交互式Shell,提供了代码自动补完,自动缩进,高亮显示,执行Shell命令等非常有用的特性。特别是它的代码补完功能,例如:在输入zlib.之后按下Tab键,IPython会列出zlib模块下所有的属性、方法和
2023-01-31

python 与 C 的交互(ctype

ctypes是Python的一个外部库,可以使用python语言调用已经编译好的C语言函数以及数据类型并进行数据交换等。ctypes的官方文档在https://docs.python.org/3/library/ctypes.html1.
2023-01-31

python之pexpect实现自动交互

Pexpect 是 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。 Pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、
2023-01-31

Python和C/C++交互的几种方法总结

前言 python作为一门脚本语言,其好处是语法简单,很多东西都已经封装好了,直接拿过来用就行,所以实现同样一个功能,用Python写要比用C/C++代码量会少得多。但是优点也必然也伴随着缺点(这是肯定的,不然还要其他语言干嘛),pytho
2022-06-04

python用户交互

= 赋值. 把等号右边的内容赋值给左边s = input("这里是input:") # input输入. 让用户输入一些内容. 程序会停在这句话. 阻塞.input结束的时候. 会自动的收集到用户输入的内容. 把内容返回给前面的变量prin
2023-01-30

python交互式(input)

#交互式输出#!/usr/bin/env   python# -*- coding:utf-8 -*-name = input("what is your name?")password = input("Please enter pass
2023-01-31

python 用户交互

input是个内建函数,具体用法:接收用户输入的内容,输入的字符串,接收到就是字符串;输入的是数字,接收的就是数字 来个简单的用户名和密码输入的例子,代码如下:#!/usr/bin/envpython#coding:utf-8__autho
2023-01-30

C语言和命令行之间的交互方式

本篇内容介绍了“C语言和命令行之间的交互方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Windows操作系统中,后缀为.exe的文件都
2023-06-20

python多进程--交互

1.管道使用'''管道Pipe'''from multiprocessing import Process,Pipedef f(conn): conn.send('child message')#给主进程发送消息 conn.cl
2023-01-31

mysql与python的交互

mysql是一种关系型数据库,是为了表示事物与事物之间的关系,本身存于数据库中的内容意义并不大,所以广泛应用于编程语言中,python中九含有与MySQL交互的模块 pymysql编程对mysql的操作#首先需要引入pymysql模块import pymysq
2019-09-04

python 与ADB shell交互

python交互使用subprocess 使设备具有部分Linux命令 python脚本:下载busybox,并且放在与脚本相同的目录下# coding:utf-8# 这个脚本用于使环境拥有busybox的环境import subproce
2023-01-31

Python基础之简单的用户交互程序

我们经常使用的程序都会有与用户交互的程序,比如网页的登录,需要输入自己的账号,密码这类的用户交互功能。我们来写个简单的用户输入和输出的程序代码:user1 = input("账号:")  #申明变量user1 储存获取用户输入的账号pass
2023-01-30

Shell之免交互的实现

目录前言一、Here Document1.Here Document概述2.基本语法格式3.Here Documen免交互4.变量设定(支持变量替换)5.格式控制6.多行注释二、Expect1.Expect概述2.expect的基本安装3.
2022-07-19

Python交互Redis的实现

模块(Redis)Ubuntusudo pip3 install redis使用流程import redis# 创建数据库连接对象r = redis.Redis(host='127.0.0.1',port=6379,db=0,p
2022-08-10

Python编程——与Office交互

首先声明我的Python的版本是3.6的。照着树上抄有很多错误的地方。这也是Python用的很不爽的地方,老是更新方法,2.X的Python升到3.X,附带的模块各种改,解决答案又分布在各个旮旯里。 这里直接放我运行好的代码(与Excel交
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录