今天在写北京精雕宏变量获取的时候遇到一个传值为数组的例子,在获取宏参数时需要我们提供获取值的个数和对应的#代码int数组(最多一次可传递64个),接口返回给我们的是一个double数组(最多一次可返回64个),在c++我们只需定义一个数组然后传给方法即可,但今天要做的是通过python来调用c++的动态连接库。

python如何传递int数组

ctypes是Python的一个外部库,提供和C语言兼容的数据类型,通过ctypes可以调用c++编写的DLL中的接口函数,所以这里我们用ctypes来定义与c类型对应的数组类型,我在python中写了一个测试方法来调用c++的接口函数。

def dome(): dll = ctypes.cdll.LoadLibrary('C:/Users/Java/Desktop/JD/Debug/JD.dll')#引用c++动态链接库 num=7 #定义数组长度 IntArray = ctypes.c_int * num #申明一个数组 ia = IntArray(501,502,503,504,505,506,507) #给数组赋值 res = dll.test(ia,num)#调用c++动态链接库接口 pyResult=ctypes.string_at(res) #转换c++返回值 print(pyResult)#输出结果dome()

C++接受传参

由于精雕接口需要连接精雕才能实现,所以这里我写了一个测试方法来验证是否能够成功获取到Python传过来的值,然后我们通过循环遍历再将接收到的值提取出来转成char*返回给Python。

为什么不直接返回double数组?因为在c/c++中没有数组这种基本数据类型,所以无法直接返回一个数组,因此这里我采取 的是将数组转成字符串格式输出。

CString转char*问题

GetBuffer字符转换

这里遇到个转类型的问题,那就是CString转char*,这里我先用的是GetBuffer,将CString转char*并在c中对转换后的值进行打印,输出结果无误,而当Python调用时输出的结果却是以十六进制数 dd 规定的字符: xdd xdd xdd xdd xdd xdd xdd ......

char* test(int VarNo[64],int len){try{CString val="";for(int i=0;i

buffer转int python_C/C++实战014:字符串转换及Python传参数组相关推荐

  1. C/C++实战014:字符串转换及Python传参数组

    今天在写北京精雕宏变量获取的时候遇到一个传值为数组的例子,在获取宏参数时需要我们提供获取值的个数和对应的#代码int数组(最多一次可传递64个),接口返回给我们的是一个double数组(最多一次可返回 ...

  2. LeetCode实战:字符串转换整数 (atoi)

    题目英文 Implement atoi which converts a string to an integer. The function first discards as many white ...

  3. Python字符串的修改以及传参

    前两天去面试web developer,面试官提出一个问题,用JavaScript或者Python实现字符串反转,我选择了Python,然后写出了代码(错误的): 1 #!/usr/bin/env p ...

  4. html中函数传递多个值,JavaScript 实战开发经验!函数多参数传参技巧

    HTML5学堂-码匠:掌握JavaScript代码的你,一定编写封装过函数,为了提升函数的控制性,必不可少的就是参数,必选可选的一大堆参数罗列出来,函数调用貌似变得麻烦起来~~~ Tips: 必选参数 ...

  5. LeetCode实战:字符串相乘

    题目英文 Given two non-negative integers num1 and num2 represented as strings, return the product of num ...

  6. LeetCode实战:字符串相加

    题目英文 Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and ...

  7. 字符串(一):char 数组

    字符串使用方法整理 系列: 字符串(一):char 数组 字符串(二):string 1. 声明 如下是一个例子(=> 表示表达式等价): char a[20] = "abcd&quo ...

  8. linux 字符串转换函数 simple_strtoul 简介

    Linux内核中提供的一些字符串转换函数: lib/vsprintf.c unsigned long long simple_strtoull(const char *cp, char **endp, ...

  9. linux 内核 字符串转换函数

    Linux内核中提供的一些字符串转换函数: lib/vsprintf.c unsigned long long simple_strtoull(const char *cp, char **endp, ...

最新文章

  1. 程序员看过来!JS、Java、C 依然强势,Go、Kotlin、Python 潜力股,2020 开发者生态系统报告
  2. 非常强悍的 RabbitMQ 总结,写得真好
  3. ALV通过F4事件,实现自定义搜索帮助F4
  4. Python ——告白小程序,添加微信号(快来设置你的freestyle吧)
  5. 在RHEL5/CentOS5上配置使用Open×××
  6. 统计学硕士考计算机博士,统计学国家重点学科博士点硕士点最全博研堂考研究生.pdf...
  7. 未签名的应用程序请求对系统进行无限制访问_OWASP Top 10 2017 10项最严重的 Web 应用程序安全风险 (完结篇)...
  8. Linux开发终端霓虹灯效果
  9. PDF文件如何插入图片?简单的操作方法
  10. PostgreSQL数据库——Pigsty grafana dashboards
  11. 我也来谈谈《我不是药神》这部电影
  12. 小程序提示 网络异常 Network Anomalies
  13. 支持中文!秒建 wiki 知识库的开源项目,构建私人知识网络
  14. promise和async
  15. cpu使用率(cpu使用率很低最大频率很高)
  16. Android :约束布局ConstraintLayout 之 Chains 链式约束
  17. 实习 | 深圳市彼岸心智科技有限公司招募新成员啦
  18. 《赢在中国》精彩评语 2006年度
  19. Encoder-Decoder自动生成对联,要试试么?
  20. 二代身份证读取-微调版

热门文章

  1. wxpython界面切换_Python图形界面—wxPython库的布局管理及页面切换
  2. Cpp 对象模型探索 / 虚基类表作用
  3. 必看:Kubernetes 开发环境对比
  4. 计算机网络管理第三版试卷,《计算机网络管理技术》试卷.doc
  5. java webservice 作用_@WebService这个标签的作用是什么
  6. python数值运算答案_笨方法学Python 习题3:数字和数学计算
  7. 谷歌浏览器chrome的vuejs devtools 插件的安装
  8. Educational Codeforces Round 64(Unrated for Div.1+Div. 2)
  9. Web服务之四:httpd虚拟主机
  10. Hive的相关面试问题