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

Posted 哎呀是不是疯啦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python程序调用C/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

(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++代码的主要内容,如果未能解决你的问题,请参考以下文章

如何让python调用C和C++代码

如何让python调用C和C++代码

如何让python调用C和C++代码

python调用C&C++

python调用C/C++

使用参数从 Python 调用 C/C++ 代码