python 如何传递字典型变量(不定参数)给c++

简介:
今天遇到一个难题,python要调用c++一个函数
c++函数是可变长的变量如add(int cmd,...)
然后再c++中使用va_list取得变长参数。
那么python 该如何调用该函数呢。弄了半天也没有发现boost.python如何支持该类型的参数。
后来一想,python dict不是就是可变长的参数吗,里边放什么都可以。
那么问题就转化问如何传递dict给c++。
贴源码如下:
1.src.cpp
#include <iostream>
#include <string>
#include<stdarg.h>
#include <Python.h>
using namespace std;

/************************************************ simple method *************************************/
void testA(PyObject *obj)
{
PyObject *ret = PyDict_GetItemString(obj, "b");
int as = PyInt_AS_LONG(ret);
printf( "**************************%d/n", as );
}
2.src4py.cpp
#include <boost/python.hpp>
#include <boost/python/object_core.hpp>
#include "src.cpp"
using namespace boost::python;
BOOST_PYTHON_MODULE(test)
{
def("a", testA);
}
3.test.py
import test
a ={'b':2}
test.a(a)

4.makefile
all:test.so

test.so:src.o src4py.o
g++ 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
src.o:
g++ -c src.cpp -o src.o -I /usr/local/python/include/python2.5/ 
src4py.o:src.o
g++ -c src4py.cpp -o src4py.o -fPIC -I /usr/local/python/include/python2.5/ -I /usr/local/boost_143/include/ 

clean:
rm -rf src.o src4py.o
rm -rf test.so 


本文转自elbertchen 51CTO博客,原文链接:http://blog.51cto.com/linkyou/751848,如需转载请自行联系原作者
相关文章
|
9天前
|
Python
python函数的参数学习
学习Python函数参数涉及五个方面:1) 位置参数按顺序传递,如`func(1, 2, 3)`;2) 关键字参数通过名称传值,如`func(a=1, b=2, c=3)`;3) 默认参数设定默认值,如`func(a, b, c=0)`;4) 可变参数用*和**接收任意数量的位置和关键字参数,如`func(1, 2, 3, a=4, b=5, c=6)`;5) 参数组合结合不同类型的参数,如`func(1, 2, 3, a=4, b=5, c=6)`。
13 1
|
12天前
|
人工智能 机器人 C++
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
|
29天前
|
编译器 测试技术 C++
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
159 0
|
2天前
|
索引 Python
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
|
3天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
8天前
|
安全 API 开发者
Python中使用`requests`库进行请求头与自定义参数设置的技术详解
【4月更文挑战第12天】在Python中,`requests`库是一个强大且灵活的HTTP客户端,用于发送所有类型的HTTP请求。在发送请求时,我们经常需要设置请求头和自定义参数来满足不同的需求。本文将详细探讨如何在Python中使用`requests`库进行请求头和自定义参数的设置。
|
17天前
|
C++ Python
【C++/Python】C++调用python文件
【C++/Python】C++调用python文件
|
28天前
|
存储 Python
Python变量与数据类型探秘
本文介绍了Python编程中的核心概念——变量和数据类型。变量是存储数据的标识符,无需预声明类型,类型由赋值自动确定。命名规则要求变量名具有描述性,以字母或下划线开头,区分大小写。Python支持多种数据类型:数值(整数、浮点数、复数)、字符串、列表、元组、字典和集合。理解这些基本概念和类型特性对编写高效Python代码至关重要。
|
29天前
|
算法 开发者 Python
【Python 基础扫盲 】self参数、__init__方法和.__str__方法的用处和区别?
【Python 基础扫盲 】self参数、__init__方法和.__str__方法的用处和区别?
20 0
|
29天前
|
存储 算法 数据挖掘
【Python 基础教程 25】全面入门指南:深度解析Python3的命名空间,作用域及变量使用教程
【Python 基础教程 25】全面入门指南:深度解析Python3的命名空间,作用域及变量使用教程
50 0