LABVIEW呼叫DLL時,字元傳遞問題

2021-10-09 03:51:30 字數 781 閱讀 9257

labview呼叫dll,dll需向labview返回字串,結果試了好幾次都是亂碼,後來才找到了原因。

1.返回值要為字串指標。dll函式型別要命名為char *;

2.如果是cstring型別的字串,要先轉換為char *的字串,可用下面的**進行轉換。

方法:使用api:widechartomultibyte進行轉換

cstring str = _t("d:\\校內專案");

//注意:以下n和len的值大小不同,n是按字元計算的,len是按位元組計算的

int n = str.getlength(); // n = 14, len = 18

//獲取寬位元組字元的大小,大小是按位元組計算的

int len = widechartomultibyte(cp_acp,0,str,str.getlength(),null,0,null,null);

//為多位元組字元陣列申請空間,陣列大小為按位元組計算的寬位元組位元組大小

char * pfilename = new char[len+1]; //以位元組為單位

//寬位元組編碼轉換成多位元組編碼

widechartomultibyte(cp_acp,0,str,str.getlength(),pfilename,len,null,null);

pfilename[len+1] = '\0'; //多位元組字元以'\0'結束

_declspec(dllexport) char * filepath();

_declspec(dllexport) char * filepath()

opencv與Labview的結合(Dll呼叫)

為什麼會有把二者結合這個想法,主要是在接觸過這兩種工具後,發現它們對影象處理有自己獨特的優勢,但也有自己的缺點,借助c opencv可以實現許多自己想實現的功能,但是在介面設計上得花另一番功夫,labview的長處就在於它的介面設計簡單,控制項拖拽所見即所得,與qt有點類似,當然qt的跨平台性是la...

dll呼叫其他DLL

總結一下這幾天使用其他程式呼叫mfc的dll,呼叫dll裡面的視窗資源,需要把當前資源控制代碼切換到dll中一般廣泛採用 afx manage state afxgetstaticmodulestate 這個是自動化的,放在函式的開頭,在函式使用完之後,自動切換回去 發現在有些時間不好用,比如dll...

C 呼叫dll時的型別轉換總結

c win 32 c char 作為輸入引數轉為 char,通過 encoding 類對這個 string 進行編碼後得到的乙個 char 作為輸出引數轉為 byte,通過 encoding 類對這個 byte 進行解碼,得到字串 c dll 介面 void cplusplustocsharp in...