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

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM