我正在尝试将一个字符串从C#传递给Delphi构建的DLL。 Delphi DLL期待PChar。
这是Delphi导出
procedure DLL_Message(Location:PChar;AIntValue :integer);stdcall;
external 'DLLTest.dll';
C#import(我试过的最后一个,有字符串,char * ref string ...)
[DllImport(
"DLLTest.dll",
CallingConvention = CallingConvention.StdCall,
CharSet = CharSet.Ansi,
EntryPoint = "DLL_Message"
)]
public static extern void DLL_Message(IntPtr Location, int AIntValue);
我以任何方式获取访问权限访问权限。
有没有解决办法在C#中将字符串值作为PChar传递?
答案 0 :(得分:4)
尝试使用MarshalAs属性,该属性允许您控制使用的本机类型。
可以在MSDN中找到类型列表:
http://msdn.microsoft.com/de-de/library/system.runtime.interopservices.unmanagedtype.aspx
DllImport(
"DLLTest.dll",
CallingConvention = CallingConvention.StdCall,
CharSet = CharSet.Ansi,
EntryPoint = "DLL_Message"
)]
public static extern void DLL_Message(
[MarshalAs(UnmanagedType.LPStr)] string Location,
int AIntValue
);