python程序調用C/C++代碼

這篇用來記錄在些模擬Canoe生成CAN數據楨工具時遇到的問題,html

生成CAN數據楨,主要分爲兩個關注點:python

1.如何從can信號名獲取到can信號的ID長度以及信號的起始位,並將信號值按照必定的規則填寫進去。算法

2.因爲FCAN進行額checksum校驗和activecount的規則,這部分算法使用C/C++最好,因此設計到python程序調用C/C++代碼(也就是這篇文章)windows

 

1.如何用python調用C++代碼:數組

這個是python官方庫的cytpes模塊的介紹,能夠關注一下「Fundamental data types函數

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

這個提供了一個簡單的例子調用C語言代碼spa

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

這個python調用C++指針和指針數組的調用(變量比較亂,要好好看一下才能看出來)命令行

(http://www.javashuo.com/article/p-hopksrvr-gg.html)

這個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的離線安裝包,安裝完畢請重啓電腦

 

(http://www.javashuo.com/article/p-faclajmz-dv.html)

 

4.爲了方便使用者,沒必要要每一個人都安裝python環境,能夠將程序打包成exe

(http://www.javashuo.com/article/p-nmxbbkbq-ko.html)

1> 安裝打包庫

pip install pyinstaller

2> python程序對應的路徑打開命令行

pyinstaller -F yourEnterFile.py

對應生成的exe在同路徑下的dist文件夾裏面,名字爲yourEnterFile.exe

 

出現這個現象即打包成功

3> 本程序由於涉及到dll,因此對應的dll也要拷貝在exe的目錄裏面

雙擊yourEnterFile.exe

相關文章
相關標籤/搜索