日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 调用c++

發(fā)布時(shí)間:2025/3/21 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 调用c++ 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

由于Python的ctypes可以使python輕松調(diào)用動(dòng)態(tài)鏈接庫,從而調(diào)用c/c++程序。利用gcc編譯c++文件為動(dòng)態(tài)鏈接庫dll或者so文件,再利用python來調(diào)用。

?

1、下載gcc

系統(tǒng)為win7 X64,下載windows版本 MinGW,下載地址:http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/

下載Download mingw-get-setup.exe (86.5 kB) (注意這是win32 的版本)

進(jìn)行安裝:

選擇默認(rèn)安裝目錄 C:\MinGW;

選擇安裝組件,如果沒有出現(xiàn)這個(gè)窗口,點(diǎn)擊快速啟動(dòng)欄,點(diǎn)擊MinGW Installation Manager,一定選上安裝The GUN C++ Compiler和The GUN Objectiv-C Compiler。

完成之后退出,將C:\MinGW\bin 添加到環(huán)境變量。設(shè)置完成后,Windows似乎不會(huì)自動(dòng)更新環(huán)境變量,除非重啟機(jī)子,那么我們可以通過在下面的命令行中,胡亂設(shè)置一下PATH(比如SET PATH=C:\),然后退出命令行,那么系統(tǒng)環(huán)境變量就會(huì)被強(qiáng)制刷新。

點(diǎn)擊cmd,輸入 g++ v 可以查看編譯器版本。

?

2、編譯c++

新建一c++文件:如test1.cpp

#include<iostream> using namespace std; void foo2(int a,int b) { cout<<a<<" "<<b<<endl; } //編譯C++,一定要加extern "C",注意C為大寫,小寫會(huì)無法識(shí)別 extern "C" { void cfoo2(int a,int b) { foo2(a,b); } }

在cmd窗口中cd到該文件所在目錄,輸入:g++ -o test1.so -shared -fPIC test1.cpp

-shared 該選項(xiàng)指定生成動(dòng)態(tài)連接庫(讓連接器生成T類型的導(dǎo)出符號(hào)表,有時(shí)候也生成弱連接W類型的導(dǎo)出符號(hào)),不用該標(biāo)志外部程序無法連接。相當(dāng)于一個(gè)可執(zhí)行文件;
-fPIC:表示編譯為位置獨(dú)立的代碼,不用此選項(xiàng)的話編譯后的代碼是位置相關(guān)的所以動(dòng)態(tài)載入時(shí)是通過代碼拷貝的方式來滿足不同進(jìn)程的需要,而不能達(dá)到真正代碼段共享的目的。

會(huì)生產(chǎn)一個(gè)test1.so 動(dòng)態(tài)鏈接庫文件。

3、python調(diào)用

寫python文件,如test1.py

import ctypes ll = ctypes.cdll.LoadLibrary lib = ll("./test1.so") lib.cfoo2(1, 3)

運(yùn)行python文件 python test1.py

注意此處,我的python開始安裝的為64位的,但是g++ 編譯的動(dòng)態(tài)文件是32位的,所以此處調(diào)用會(huì)出錯(cuò):不是有效的Win32


此時(shí)要把原來的64位的python卸載掉,再安裝一個(gè)32位的Python就可以了。

運(yùn)行成功顯示:1 3

?

總結(jié)

以上是生活随笔為你收集整理的python 调用c++的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。