真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python與C的函數(shù) python與C語言

python使用ctypes調(diào)用C編譯dll函數(shù)方法

在函數(shù)聲明加入前綴,如

成都創(chuàng)新互聯(lián)-云計(jì)算及IDC服務(wù)提供商,涵蓋公有云、IDC機(jī)房租用、成都服務(wù)器托管、等保安全、私有云建設(shè)等企業(yè)級(jí)互聯(lián)網(wǎng)基礎(chǔ)服務(wù),服務(wù)電話:18980820575

__declspec(dllexport) int Fun(int a, int b)

否則在加載該dll時(shí)會(huì)提示找不到該符號(hào)

在windows下可以通過vs自帶的dumpbin工具查看可被調(diào)用符號(hào)

dumpbin /exports test.dll

C函數(shù)在調(diào)用過程中關(guān)于參數(shù)傳遞和壓棧由多種規(guī)定,作為dll提供給其他程序調(diào)用時(shí),必須明確并統(tǒng)一為同一種調(diào)用規(guī)定,否則會(huì)導(dǎo)致棧破壞,編譯器負(fù)責(zé)具體實(shí)現(xiàn)調(diào)用規(guī)定,主要有以下幾種調(diào)用規(guī)定

python下調(diào)用C庫(kù)有多種方式,ctypes是其中一種比較方便的,調(diào)用時(shí)首先需要加載dll文件,根據(jù)C dll的調(diào)用規(guī)定不同需要使用不同接口,使用ctypes需要 import ctypes 庫(kù)

對(duì)于簡(jiǎn)單的C函數(shù),例如 int add(int a, int b) , 此時(shí)就可以直接調(diào)用了,如

對(duì)于較復(fù)雜的C函數(shù)的參數(shù)情況,ctypes調(diào)用時(shí)對(duì)入?yún)⒑统霾妥鲆欢ㄌ幚?,這里分情況討論

以上包含了幾種主要的參數(shù)傳遞情況,ctypes也提供了一個(gè)較為完整的python類型和C類型的對(duì)照,如下:

python怎么調(diào)用c的main函數(shù)

if

__name__=="__main__":

print

'main'

當(dāng)腳本作為執(zhí)行腳本時(shí)__name__的值為__main__當(dāng)腳本作為模塊時(shí)__name__為模塊文件名。舉個(gè)例子,a.py作為執(zhí)行腳本時(shí)__name__的值是__main__。有2個(gè)腳本,a.py和b.py,a中引入b,執(zhí)行a.py時(shí),在b中模塊的__name__就是b.py

python與c區(qū)別有哪些

第一點(diǎn):語言類型不同

python是一種動(dòng)態(tài)類型語言,又是強(qiáng)類型語言。它們確定一個(gè)變量的類型是在您第一次給它賦值的時(shí)候。C是靜態(tài)類型語言,一種在編譯期間就確定數(shù)據(jù)類型的語言。大多數(shù)靜態(tài)類型語言是通過要求在使用任一變量之前聲明其數(shù)據(jù)類型來保證這一點(diǎn)的。

第二點(diǎn):對(duì)象機(jī)制不同

python中所有的數(shù)據(jù),都是由對(duì)象或者對(duì)象之間的關(guān)系表示的,函數(shù)是對(duì)象,字符串是對(duì)象,每個(gè)東西都是對(duì)象的概念。每一個(gè)對(duì)象都有三種屬性:實(shí)體、類型和值。C中沒有對(duì)象這個(gè)概念,只有數(shù)據(jù)的表示。

第三點(diǎn):變量類型不同

python六個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)類型:Number數(shù)字、string字符串、List列表、Tuple元組、Sets集合、Dictionary字典,數(shù)字類型有四種類型:整數(shù)、布爾型、浮點(diǎn)數(shù)和復(fù)數(shù)。C語言也可分四類:基本類型、枚舉類型、void的類型、派生類型,基本類型:整數(shù)類型、浮點(diǎn)類型。

第四點(diǎn):函數(shù)庫(kù)的使用方法不同

在C語言中使用那個(gè)庫(kù)函數(shù),需要引入頭文件用include引入,而在python中需要引入別的模塊或者函數(shù)時(shí)需要用import引入。

兩者的不同機(jī)制是C語言中include是告訴預(yù)處理器,這個(gè)include指定的文件的內(nèi)容,要當(dāng)作本地源文件出現(xiàn)過,而python中的import可以通過簡(jiǎn)單的import引入,或者是import

numpy as np。

第五點(diǎn):全局變量不同

在C語言中,聲明全局變量,如果值是恒定的,那么可以直接用#define聲明,如果只是聲明全局,并且變量的值是可變的,那么直接類似int

a就可以了。

在python中,聲明全局變量時(shí),需要加上global,類似global a,在函數(shù)里面使用的時(shí)候需要先聲明global

a,否則直接用a那么python會(huì)重新創(chuàng)建一個(gè)新的本地對(duì)象并將新的值賦值給他,原來的全局變量的值并不變化。

如何通過Boost.Python在Python中使用C++類和函數(shù)

(1)從Boost官方網(wǎng)站下載Boost庫(kù)源文件,將其解壓至某一目錄中。

(2)將Boost解壓至的目錄添加到VC++ 6.0的【Include files】中,

(3)進(jìn)入Boost目錄下的“l(fā)ibs\python\build\VisualStudio”子目錄中,在VC++ 6.0中打開其中的“boost_python.dsw”文件。

(4)單擊【Build】|【Batch Build】命令,分別編譯Boost.Python的Debug和Release版。

(5)編譯完成后將在Boost目錄下的“l(fā)ibs\python\build\bin-stage”子目錄中生成動(dòng)態(tài)鏈接庫(kù)和庫(kù)文件。由于使

用Boost.Python編寫的Python擴(kuò)展在運(yùn)行時(shí)根據(jù)版本不同需要“boost_python.dll”和

“boost_python_debug.dll”文件。為了方便,可以將其放到Windows安裝目錄下的“system32”目錄下。否則,需要將其

和Python擴(kuò)展放在同一目錄中。

(6)將Boost目錄下的“l(fā)ibs\python\build\bin-stage”子目錄添加到VC++ 6.0的【Library files】中,

完成上述設(shè)置后就可以使用Boost.Python編寫Python擴(kuò)展了。

使用Boost.Python擴(kuò)展和嵌入Python

通過Boost.Python可以在Python內(nèi)使用C++類和函數(shù)。和SWIG一樣Boost.Python簡(jiǎn)化了編寫Python擴(kuò)展的代碼,而不用使用Python/C API。但與SWIG不同,Boost.Python是一個(gè)類庫(kù),無需再使用接口文件。

初始化和方法列表

在Boost.Python中可以通過使用BOOST_PYTHON_MODULE來命名模塊名。在BOOST_PYTHON_MODULE中則可以使用def來實(shí)現(xiàn)使用Python/C API定義的方法列表。以下是一個(gè)簡(jiǎn)單的例子。

void show()

聲明show函數(shù)

{

cout "Boost.Python";

}

BOOST_PYTHON_MODULE(example)

使用BOOST_PYTHON_MODULE命名模塊名為“example”

{

def("show",show);

相當(dāng)于定義方法列表

以上就是對(duì)如何編譯Boost.Python以及如何使用Boost.Python擴(kuò)展和嵌入Python的相關(guān)的內(nèi)容的介紹,望你會(huì)有所收獲。

python 調(diào)用c函數(shù)里面的函數(shù)嗎

若你是想調(diào)用 c 編寫的DLL,可以使用ctypes調(diào)入使用;

#!/usr/bin/python

from?ctypes?import?*

import?os?

#需要使用絕對(duì)路徑

extest?=?cdll.LoadLibrary(os.getcwd()?+?'/DemoC.so')

或在windows下

#!/usr/bin/python

import?ctypes

import?os?

if?os.name?==?'nt':?#?windows系統(tǒng)

_lib_name?=?os.getcwd()?+?'/DemoC.DLL'

dl200_lib?=?ctypes.WinDLL(dl200_lib_name)

python與c語言的關(guān)系

1、語言類型不同

Python是一種動(dòng)態(tài)類型語言,又是強(qiáng)類型語言;C語言是靜態(tài)類型語言,在編譯期間就確定數(shù)據(jù)類型的語言;

2、內(nèi)存管理不同

Python使用自動(dòng)垃圾收集器進(jìn)行內(nèi)存管理;C語言中程序員必須自己進(jìn)行內(nèi)存管理;

 3、對(duì)象機(jī)制不同

Python所有的數(shù)據(jù),都是由對(duì)象或者對(duì)象之間的關(guān)系表示的,函數(shù)是對(duì)象,字符串是對(duì)象,每個(gè)東西都是對(duì)象的概念;C語言中沒有對(duì)象這個(gè)概念,只有數(shù)據(jù)的表示。

4、運(yùn)行效率不同

Python有一個(gè)GIL鎖,導(dǎo)致其對(duì)多線程支持不夠好,運(yùn)行速度比較慢;C語言比較快,是很好的底層語言,運(yùn)行效率上優(yōu)于Python。

5、變量類型不同

Python有六個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)類型,包含Number數(shù)字、String字符串、List列表、Tuple元祖、Sets集合、Dictionary字典;數(shù)字類型有四種,包含:整數(shù)、布爾型、浮點(diǎn)數(shù)和復(fù)數(shù)。C語言也分為四大類,其中包含基本類型、枚舉類型、void的類型、派生類型,基本類型包含整數(shù)類型、浮點(diǎn)類型。

6、函數(shù)庫(kù)的使用方法不同

C語言中使用庫(kù)函數(shù),需要引入頭文件用include引入;Python中需要引入別的模塊或者函數(shù)時(shí)需要用import引入。


當(dāng)前名稱:Python與C的函數(shù) python與C語言
文章地址:http://weahome.cn/article/hiiggp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部