码迷,mamicode.com
首页 > 编程语言 > 详细

python程序调用C/C++代码

时间:2019-09-17 00:00:57      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:you   library   bit   模拟   one   log   sha   生成   sum   

这篇用来记录在些模拟Canoe生成CAN数据桢工具时遇到的问题,

生成CAN数据桢,主要分为两个关注点:

1.如何从can信号名获取到can信号的ID长度以及信号的起始位,并将信号值按照一定的规则填写进去。

2.由于FCAN进行额checksum校验和activecount的规则,这部分算法使用C/C++最好,所以设计到python程序调用C/C++代码(也就是这篇文章)

 

1.如何用python调用C++代码:

这个是python官方库的cytpes模块的介绍,可以关注一下“Fundamental data types

(https://docs.python.org/3/library/ctypes.html)

这个提供了一个简单的例子调用C语言代码

(https://blog.csdn.net/theonegis/article/details/82490549)

这个python调用C++指针和指针数组的调用(变量比较乱,要好好看一下才能看出来)

(https://blog.csdn.net/weixin_41770169/article/details/90675653)

这个python调用C代码,传入一个数组给函数,因为传进去的实质是指针,作为参数的数组内容会改变,两个例子

(https://blog.csdn.net/u012449363/article/details/76690540/)

(https://blog.csdn.net/cahesi/article/details/80256638)

 

2.编译C/C++生成动态库

这个是如何创建C++动态库工程的方法

(https://blog.csdn.net/qianchenglenger/article/details/21599235)

这个是如何生成C++动态库的方法

32bit:直接用你的C++编译器32位的即可

64bit:使用mingw-w64编译器(如果没有请看第3条)

无论32bit或者是64bit,生成动态库方法如下:

cd到你的动态库工程里面使用编译命令如下

gcc -shared -o yourDynamicLibNmae.dll yourSourceFileName.cpp

最后生成的yourDynamicLibNmae.dll”文件即为所求

 

3.PythonC的编译器要保持一致,要不都是64bit的,要不都是32bit

 

这个是windows下安装mingw-w64的离线安装包,安装完毕请重启电脑

 

(https://www.cnblogs.com/TAMING/p/9945389.html)

 

4.为了方便使用者,不必要每个人都安装python环境,可以将程序打包成exe

(https://blog.csdn.net/shangxiaqiusuo1/article/details/81113900)

1> 安装打包库

pip install pyinstaller

2> python程序对应的路径打开命令行

pyinstaller -F yourEnterFile.py

对应生成的exe在同路径下的dist文件夹里面,名字为yourEnterFile.exe

技术图片

 

出现这个现象即打包成功

3> 本程序因为涉及到dll,所以对应的dll也要拷贝在exe的目录里面

双击yourEnterFile.exe

 

 

 

 

python程序调用C/C++代码

标签:you   library   bit   模拟   one   log   sha   生成   sum   

原文地址:https://www.cnblogs.com/y-c-y/p/11530708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!