欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-01-30 11:11:24
这篇用来记录在些模拟Canoe生成CAN数据桢工具时遇到的问题, 生成CAN数据桢,主要分为两个关注点: 1.如何从can信号名获取到can信号的ID长度以及信号的起始位,并将信号值按照一定的规则填写进去。 2.由于FCAN进行额checksum校验和activecount的规则,这部分算法使用C/ ......

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

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

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

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

 

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

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

()

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

()

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

()

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

()

()

 

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

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

()

这个是如何生成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

()

1> 安装打包库

pip install pyinstaller

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

pyinstaller -f yourenterfile.py

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

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

 

出现这个现象即打包成功

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

双击yourenterfile.exe