初學c#,不明白怎麼用指標呼叫c下的函式,經過一番學習,記錄如下:
//***************====dll_test.def====
library "test_dll"
exports
addtest @ 1
addstring @ 2
///dll 主檔案******************************==
#include
#include
#include
#include
int __stdcall addtest(int x, int y, int *z)
char *addstring(char **stringarray, char *string1, int numofarray)
//*****====c#呼叫dll的方法:*************************==
[system.runtime.interopservices.dllimport("d://2009lab//0902//090208//testcsp_output//debug//test_dll.dll")]
static extern int addtest(int x, int y, intptr z);
[system.runtime.interopservices.dllimport("d://2009lab//0902//090208//testcsp_output//debug//test_dll.dll")]
static extern intptr addstring(intptr stringarray, intptr string1, int numofarray);
private void button1_click(object sender, eventargs e)
private void button2_click(object sender, eventargs e)
//strarray[num_of_vars] = 0;
intptr outstring = marshal.allochglobal(100);
for (int i = 0; i < 100; i++)
addstring(strarray, outstring, num_of_vars);
this.textbox2.text = marshal.ptrtostringansi(outstring);
marshal.freehglobal(outstring);
for (int i = 0; i <= num_of_vars; i++)
}
C 呼叫C 寫的DLL
方法有不少,這裡記錄其中的乙個方法。編譯 呼叫通過了的。期間遇到的問題是c 呼叫時傳遞string型別的引數和返回值會報錯。targetinvocationexception異常,值不在範圍內,記憶體不可訪問等等。解決方法是 在c 的dll中將string型別的引數返回值改為lptstr型別。在c ...
C 呼叫Delphi寫的DLL
在c 中可以這樣呼叫 呼叫 這裡需要注意的是要外傳的pchar型別引數,在c 中對應使用stringbuilder,如果使用string沒有任何資訊傳出,如果使用ref string形式,則會出現記憶體錯誤。在c 中可以這樣呼叫 呼叫 經過測試 delphi中integer的引數使用c 中的int即...
在C 中呼叫C 寫的DLL
這裡兩個問題,一是如何將c 編譯成dll,二是在c 和c 中呼叫這個dll 1,寫c 的dll,參照以下link,它說的是c 中的dll呼叫,所以肯定成功 2,寫乙個c 呼叫上面寫的dll 2.1將以上的dll拷貝到debug release目錄,然後寫c 程式如下 using system usi...