www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 測試測量 > 測試測量
[導(dǎo)讀]雖然我們都知道要使用 Call Library Function Node去載入DLL,但一遇到指針(Pointer)還真不知道該怎么設(shè)定? [Answer]指針 (Pointer)是在C語言中很重要的一種資料型態(tài),并且是被廣泛的被使用,所以當(dāng)要用LabVIEW去

雖然我們都知道要使用 Call Library Function Node去載入DLL,但一遇到指針(Pointer)還真不知道該怎么設(shè)定?

[Answer]

指針 (Pointer)是在C語言中很重要的一種資料型態(tài),并且是被廣泛的被使用,所以當(dāng)要用LabVIEW去呼叫C/C++所開發(fā)的DLL時,一定會遇到指針的問題,接著我會以傳遞及接收指標(biāo)這兩個方向來說明。


一、傳遞指針到 DLL

①傳遞整數(shù) (Integer)指標(biāo)

如果以下是我們呼叫的函式

void ReturningValues??ByReference_Integer(int x, int y, int *sum);

我們要將資料傳遞到 *sum中,所以請在Data type欄位選擇”Signed 32-bit Integer”,然后在Pass欄位選擇”Pointer to Value.

②傳遞陣列 (Array)資料

我們以下列函式為例

int PassingParamters_ArrayOfIntegers (int x[], int len??gth);

我們要將資料傳遞到陣列,此時也要使用指標(biāo)的方式來傳,請你在 Type欄位選擇”Array”,Data type欄位選擇”Singed 32-bit Integer”,Array format欄位選擇”Array Data Pointer”.

③傳遞字串(String)指標(biāo)

以下列函式為例

int PassingParamters_String (char *str);

當(dāng)我們要將資料傳遞到 *str中,請你在String format欄位選擇”C String Pointer”

④傳遞結(jié)構(gòu)(Struct)資料

以下例函式為例

void ReturningValues??ByReference_SimpleStruct (struct simpleStructCircle circle, struct simpleStructCircle *largerCircle);

如果是傳遞結(jié)構(gòu)的話,只需要將原本結(jié)構(gòu)中的內(nèi)容依序傳入即可,以本函式為例 ”circle” 中含有三個浮點(diǎn)數(shù)分別是 x, y, radius,所以只要依序宣告即可,但若是遇到結(jié)構(gòu)指標(biāo),請你在 Type 欄位選擇 ”Adapt to Type” , Data format 欄位選擇”Handles by Value”,如下圖所示。

二、從 DLL接收指標(biāo)

①函式回傳指標(biāo)

如果函式程式碼如下

int * ReturnAValue_PointerToInteger(void)

{

int *x = (int *) malloc(sizeof(int));

*x = 5;

return x;

}

所以我們可以知道函式本式回傳整數(shù)指標(biāo),請你在 Type欄位選擇” Numeric”,在Data type欄位選擇”Signed Pointer-sized Integer”

②以Reference型式回傳

我們以下列程式碼為例

void ReturningValuesByReference_Integer (int x, int y, int *sum)
{
//sum is a pointer
*sum = x + y;
}

以上的配置方法是直接使用調(diào)用庫函數(shù)節(jié)點(diǎn)來實現(xiàn)時需要做的工作。

如果我們采用dll調(diào)入生成VI的方式則不需要,因為labview已經(jīng)給配置好了!

如下圖:


這是一個通過dll自動生成的VI,里面也就是一個調(diào)用庫函數(shù)節(jié)點(diǎn)的程序,很簡單,但是參數(shù)已經(jīng)給配置好了!

如下:




這兩種不同的參數(shù)類型 在傳遞那個選項里不同,正如本文所述。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

在計算機(jī)編程領(lǐng)域,指針是C/C++等語言中強(qiáng)大而靈活的工具,而指針?biāo)阈g(shù)則是挖掘指針潛力的關(guān)鍵技術(shù)之一。其中,利用偏移量進(jìn)行數(shù)組操作是指針?biāo)阈g(shù)的典型應(yīng)用,它能顯著提升代碼的執(zhí)行效率,為高性能計算開辟新路徑。

關(guān)鍵字: 指針?biāo)阈g(shù) 指針 C語言

下面的項目包括一個機(jī)器人完成各種任務(wù)。這是通過在機(jī)器人上使用和實現(xiàn)各種傳感器來完成的。機(jī)器人能夠在一個封閉的區(qū)域內(nèi)移動,收集球,并在最后的一個點(diǎn)上放下球。機(jī)器人將繪制出它去過的位置和該區(qū)域內(nèi)的障礙物。

關(guān)鍵字: 傳感器 機(jī)器人 LabVIEW

數(shù)組和指針在使用上還有一些區(qū)別。首先,數(shù)組名代表整個數(shù)組,可以用來初始化其他數(shù)組,但數(shù)組名不能被賦值或自增。其次,數(shù)組在函數(shù)調(diào)用時,傳遞的是數(shù)組的地址,而不是整個數(shù)組。指針可以被賦值或自增。指針還可以用來動態(tài)分配內(nèi)存空間...

關(guān)鍵字: 數(shù)組 指針

在C語言編程中,指針是一個強(qiáng)大且靈活的工具,它允許直接訪問和操作內(nèi)存地址。然而,正是這種直接性使得指針成為了一個容易出錯和難以調(diào)試的特性。本文將深入解析C語言中的指針概念,探討其工作原理,并揭示常見的指針陷阱及其避免方法...

關(guān)鍵字: C語言 指針

引用與指針在帶來便利的也會因為使用不當(dāng)而導(dǎo)致一些難以調(diào)試的錯誤。比如,引用的一個常見問題是循環(huán)引用,它可能會導(dǎo)致程序出現(xiàn)內(nèi)存泄漏的風(fēng)險。而指針則更為復(fù)雜,容易出現(xiàn)懸空指針的情況,即指針指向的內(nèi)存已經(jīng)被釋放,但指針本身還保...

關(guān)鍵字: 引用 指針

指針傳遞參數(shù)本質(zhì)上是值傳遞的方式,它所傳遞的是一個地址值。值傳遞過程中,被調(diào)函數(shù)的形式參數(shù)作為被調(diào)函數(shù)的局部變量處理,即在棧中開辟了內(nèi)存空間以存放由主調(diào)函數(shù)放進(jìn)來的實參的值,從而成為了實參的一個副本。值傳遞的特點(diǎn)是被調(diào)函...

關(guān)鍵字: 指針 引用

在MCU(微控制器單元)軟件開發(fā)中,指針作為一種強(qiáng)大的工具,能夠顯著提高程序的靈活性和性能。然而,指針的使用也伴隨著一系列潛在的風(fēng)險和陷阱,特別是在資源受限的嵌入式系統(tǒng)中。本文將深入探討MCU軟件開發(fā)中使用指針時可能遇到...

關(guān)鍵字: MCU 軟件開發(fā) 指針

懸空指針(Dangling Pointer)和野指針(Wild Pointer)是C語言中指針使用不當(dāng)時常見的兩種錯誤情況。懸空指針產(chǎn)生于指針指向的內(nèi)存被釋放后,該指針未置為空、而仍指向原地址,如此會導(dǎo)致潛在的安全隱患和...

關(guān)鍵字: C語言 指針

作為嵌入式工程師,寫一個效率高效,思路清晰的C語言程序是我們的終極目標(biāo),那么,怎么才能寫好這樣的程序呢?首先,我們要用C語言的思維方式來進(jìn)行程序的構(gòu)架構(gòu)建;其次,要有良好的C語言算法基礎(chǔ),以此來實現(xiàn)程序的邏輯構(gòu)架;最后,...

關(guān)鍵字: C語言 指針

指針和內(nèi)存泄漏對某些程序員來說似乎是一種威懾,但是,一旦你了解了指針和相關(guān)內(nèi)存操作的基礎(chǔ)知識,它們將成為你在 C 中擁有的最強(qiáng)大的工具。

關(guān)鍵字: C語言 指針
關(guān)閉