所以我在這種情況下使用的IntPtr,如何將c#字符串傳遞給delphi .dll PChar類型?
-delphi(德爾福2006年版)的代碼瞭解到
function GetRequestResult(out code:integer):PChar; stdcall;
begin
LogMessage('GetRequestResult');
code:=requestCode;
result:=PChar(RequestResult);
LogMessage('GetRequestResult done');
end;
然後,使用在C#中, 我一樣使用,
IntPtr str = GetRequestResult(out code);
string loginResult = Marshal.PtrToStringAnsi(str);
和這很好。
那麼,這種情況呢?
-delphi代碼
procedure Login(login,password:PChar); stdcall;
...
...
這PChar類型是()內。 那麼傳遞字符串值到那個Login delphi函數的確切方法是什麼?
[的DllImport( 「ServerTool」)]
私人靜態外部空隙登錄([的MarshalAs(UnmanagedType.LPStr)]串ID,[的MarshalAs(UnmanagedType.LPStr)]串傳輸);
private static extern void Login(IntPtr id,IntPtr pass); //在這種情況下,後期如何使用此IntPtr?
private static extern void Login(string id,string pass);
在此先感謝。
什麼德爾福版本?因爲這主要是一個C#問題,所以如果底層DLL是delphi 7 dll,那麼我建議你只能在stackoverflow中引用'PAnsiChar'(它始終等價於C中的char *'類型,不管Delphi版本如何) XE那麼上面列出的簽名會有兩個不同的含義。 – 2012-08-12 13:36:39
嗨。 Delphi 2006 express – leegod 2012-08-12 22:08:00