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.Python和C的编译器要保持一致,要不都是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++代码的更多相关文章
- SQLite 版本引发的 Python 程序调用问题
问题 在跑 OpenStack functional 功能测试的时候有两个用例过不去. nova.tests.functional.db.test_resource_provider.Resource ...
- 如何在python中调用C语言代码
1.使用C扩展CPython还为开发者实现了一个有趣的特性,使用Python可以轻松调用C代码 开发者有三种方法可以在自己的Python代码中来调用C编写的函数-ctypes,SWIG,Python/ ...
- 想要薪资20-30K,Python程序员认真敲代码就够了!
在这个年代,互联网的飞速壮大大家有目共睹,除了表露出的公共受益,其中计算机编程者也是做出了巨大的贡献,即使外国编程语言仍旧属于领导者,但是在互联网的壮大下,我们这是"地球村",国内 ...
- python下调用c语言代码
1)首先,创建一个.c文件,其大体内容如下: 2 #include <Python.h> 99 char * extract(char * path) ...
- Python程序调用摄像头实现人脸识别
使用简单代码实现摄像头进行在线人脸识别 import cv2 import sys import logging as log import datetime as dt from time impo ...
- python如何调用c编译好可执行程序
python如何调用c编译好可执行程序 以下总结出几种在Python 中调用 C/C++ 代码的方法 ------------------------------------------- ...
- 【python基础】如何注释代码块
前言 编写python程序有时候需要对代码块进行comment,本文对此介绍. 方法 python注释的三种方法: 1.井号注释单行代码: # 2.三个单引号或三个双引号注释语句块: ''' 或者&q ...
- python基础===PEP网站,代码规范指南
PEP 8是最古老的PEP之一,它向Python程序员提供了代码格式设置指南.PEP 8的篇幅很长,但大都与复杂的编码结构相关. https://python.org/dev/peps/pep-000 ...
- 64位程序调用32DLL解决方案
最近做一个.NETCore项目,需要调用以前用VB6写的老程序,原本想重写,但由于其调用了大量32DLL,重写后还需要编译为32位才能运行,于是干脆把老代码整个封装为32DLL,然后准备在64位程序中 ...
随机推荐
- 全栈开发博客系统(nodejs+vuejs+mongodb)
本篇文章将会介绍如何使用nodejs+vuejs构建个人博客. 主要分三部分内容: 环境准备 博客后端管理系统(admin) 后端服务(主要提供admin及web端接口) 博客前端展示(web) 环境 ...
- 阿里短信封装SDK TP3.2
1.阿里短信接口需要企业认证: 2.短信需要短信模板 <?php /** * 阿里云短信验证码发送类 * @param string $accessKeyId key * @param stri ...
- 对android中ActionBar中setDisplayHomeAsUpEnabled和setHomeButtonEnabled和setDisplayShowHomeEnabled方法的理解
转自: http://blog.csdn.net/lovexieyuan520/article/details/9974929 http://blog.csdn.net/cyp331203/artic ...
- ViewGroup和View
ViewGroup本身表示容器, 他是View的一个抽象子类, 它可以包含很多个普通的view组件,另外它还可以包含一个ViewGroup容器. 由于它是一个抽象类,所以实际使用中通常使用viewGr ...
- Metasploit工具----漏洞利用模块
漏洞利用是指由渗透测试者利用一个系统.应用或者服务中的安全漏洞进行的攻击行为.流行的渗透攻击技术包括缓冲区溢出.Web应用程序攻击,以及利用配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的 ...
- 即时聊天APP(二) - MainActivity
主活动包含三个Fragment,分别是会话.联系人和设置,初始布局隐藏所有碎片,然后把应该显示的显示出来: //隐藏所有Fragment private void hideAll(){ Fragmen ...
- Vuex,从入门到...
Vuex 是什么? 官方是这么说的:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 不懂? ...
- 彻底关闭Windows10的更新
Windows10的自动更新太恶心,关闭之后总能死灰复燃,更新偶尔占用大量的CPU内存,非常影响使用.而网上大多数都是关闭服务之类的方法,但是关闭之后没过多久又会重新自动启动,如何彻底摆脱wiondo ...
- Xshell无法连接Linux虚拟机问题
遇到的情况是,在虚拟机下安装了Linux后,xshell无法连接远程的虚拟机. 我遇到的情况是虚拟机可以ping 主机,主机确ping不了虚拟机. 使用的VM设置了两个网卡,一个nat 一个host ...
- 环境搭建-CentOS集群搭建
环境搭建-CentOS集群搭建 写在前面 最近有许多小伙伴问我,大数据的hadoop分布式集群该如何去搭建.所以,想着,就写一篇博客,帮助到更多刚入门大数据的人.本博客会一步一步带你实现一个Hadoo ...