-
當 C 呼叫用 C++ 編寫的 COM DLL 包裝庫時,會出現兩個問題:
1 資料型別轉換問題。
2 指標或位址引數傳遞問題。
首先是資料型別轉換問題。 因為 C 是。 .NET 語言,利用是。 net,所以它實際上是 C++ 資料型別的組合。 。網。
例如,C++的原始函式是:
int __stdcall functionname(unsigned char param1, unsigned short param2)
引數資料型別為 c,必須轉換為相應的資料型別。 如:
dllimport(“ com dll path/file ”)
extern static int functionname(byte param1, ushort param2)
因為呼叫了 stdcall 函式,所以使用了 p invoke 的呼叫方法。 方法 functionname 必須宣告為靜態外部函式,即帶有 extern static 標頭。 我們可以看到,在呼叫過程中,unsigned char 變成了 byte,unsigned short 變成了 ushort。
轉換後,引數的資料型別保持不變,但必須更改宣告方法。 .NET 語言的規範。
-
char * 到 C 到字串
int * 為 refint
做多到 int
-
你只需呼叫,嘿,無論原始資料型別是什麼,你都可以傳遞它,然後會出錯。
-
函式的原型定義是 char,所以你當然會繼續使用 char。
-
使用 system::string 就可以了,因為您已經指定了 charset = 並且 clr 可以自動將 ASCI 字串轉換為 Unicode 字串 (.)。net 字串)。
-
與字串。 char* 表示字元型別的記憶體位址。 此字串不應更改函式中的任何內容。
Stringbudiler 通常用於更改字串。
-
&符號是C++中的引用型別,類似於C中的ref,以及Dellphi中的var關鍵字作為引數
切換到德爾福:
function nvs_login(var lloginid:dword; const sznvsip:pchar; const szuser :
pchar; const szpwd : pchar) :boolean;
-
我感覺是直線的,對吧? 或者 string[0] ......
由於 c 中的變數都是指標,因此字串實際上應該在 c++ 中。
string*……
-
不能直接使用,可以將函式引數傳遞給對應的函式,否則在被呼叫的函式中將不可見。 請參考它。
-
不能定義為全域性變數。
-
byref fingerbuf as string
此外,fingerbuf 引數需要快取在肢體區域,不得小於 256 304 位元組。
-
類沒辦法,結構體沒問題。
事實上,對於 DLL,類的匯出一直是乙個問題。 由於專案的需要,我之前已經了解了一點,但我最終放棄了。
然後我想到了乙個辦法。
類的例項通過指標傳遞出去,然後在類的基礎上封裝一層,每個公共函式都用乙個函式封印,建立的類的指標直接傳遞到參數列中,在dll內部調整對應的方法。
房東不妨也試試。
例如,g() 函式返回乙個 intptr。 這個指標是在dll中建立物件的指標,但在C語言中並沒有具體劃分為張三或王二。
將 add 函式的全域性匯出函式 add2(void*) 新增到呼叫 a 的 dll 中,然後將指標轉換為 add2 的函式,然後調整其 add 方法。
這有點像在敵後繞道而行。
此外,由於需要用 C 語言呼叫 DLL,因此只要新增執行時支援,DLL也可以編寫為託管。 將部分新增到該類宣告中,然後直接新增引用以像 C 中的 dll 一樣使用它有多方便? 我還嘗試了乙個映象驅動的,它被密封為託管的 dll,它同樣易於使用。
房東也可以考慮一下。
-
房東:你是怎麼解決這個問題的?
我也遇到了同樣的問題,char**p 指向指標陣列。 在dll中遵循是可以的,但是當呼叫c時,它會提示非法記憶體或其他東西。
-
如果 dll 檔案是託管的,則可以通過將其直接附加到 bin 來直接在程式中呼叫它,如果它是非託管類,則只能使用它。
使用 dllimportattribute 標記公共靜態外部方法,例如。
dllimport("你的 dll 的名稱")]public static extern void test(intptr s1,intptr s2);
-
傳遞乙個二維陣列 (char[,]) 或直接在 unsafe 塊中使用指標。
您也可以嘗試交錯陣列 (char),我也沒有嘗試過。
-
應該可以直接使用字串!
開啟 SPSS 後,單擊下面的 Variable View 選項卡。 在變數檢視的“名稱”選項卡下,雙擊單元格以在操作行中輸入文字。 輸入後按回車鍵,將自動生成以下引數。 >>>More
變數分為自變數、因變數和不相關變數。
一般來說,在生物學研究中,有乙個人為控制的量可以調整或改變,即自變數,由於自變數的變化而變化的量是因變數,其他變化因素是無關變數。 >>>More
根據定義,有 (sinx)。'=lim[sin(x+ x)-sinx] ( x),其中 x 0,將 sin(x+ x)-sinx,即 sinxcos x+cosxsin x-sinx,由於 x 0,所以 cos x 1,因此 sinxcos x+cosxsin x-sinx cosxsin x,則 (sinx)'=lim(cosxsin x) x,這裡必須使用乙個重要的極限,當 x 0 時,lim( sin x) x=1,則 (sinx)'=cosx。 >>>More