相信很多使用c#的朋友碰到過類似的問題,我今天在開發中也碰到類似問題,希望能給大家一點啟示吧!
在delphi中申明的函數原型為 function aa(var writedate:pchar;var validdate:pchar):integer;stdcall;動態庫的名稱為valid.dll 而且函數的返回值是通過兩個pchar類型來返回的
那么我們在c#中該用何種類型來接收pchar呢,個人建議用stringbuilder
我們在c#中可以這用來申明
[DllImport("valid.dll"),EntryPoint="aa" CharSet=Charset.Ansi]
public static extern int checkDate(ref StringBuilder WriteDate,ref StringBuilder LimitDate);
記住如果delphi中用var來申明變量的,在C#中一定要加ref 的,另外在delphi中用pchar類型的變量在C#中最好用StringBuilder 否則得話可能用C#來調用Delphi Dll 會報錯,通常提示為內存寫保護的錯誤信息。
在delphi中申明的函數原型為 function aa(var writedate:pchar;var validdate:pchar):integer;stdcall;動態庫的名稱為valid.dll 而且函數的返回值是通過兩個pchar類型來返回的
那么我們在c#中該用何種類型來接收pchar呢,個人建議用stringbuilder
我們在c#中可以這用來申明
[DllImport("valid.dll"),EntryPoint="aa" CharSet=Charset.Ansi]
public static extern int checkDate(ref StringBuilder WriteDate,ref StringBuilder LimitDate);
記住如果delphi中用var來申明變量的,在C#中一定要加ref 的,另外在delphi中用pchar類型的變量在C#中最好用StringBuilder 否則得話可能用C#來調用Delphi Dll 會報錯,通常提示為內存寫保護的錯誤信息。
