从CSharp传递字符串作为PChar到Delphi DLL

4

我正在尝试将一个字符串从C#传递到Delphi构建的DLL。Delphi DLL期望PChar。

这是Delphi导出:

procedure DLL_Message(Location:PChar;AIntValue :integer);stdcall;
external 'DLLTest.dll';

C#导入(上一次我尝试时,有字符串、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传递的解决方案?

1个回答

5

这里不需要使用MarshalAs。这是默认的封送处理方式。同样,对于DllImport属性的参数也是如此。只需要文件名。 - David Heffernan
你确定吗?默认值不是UnmanagedType.LPWStr(UTF-16)吗? - Jens Mühlenhoff
我已经再次阅读了文档,并仍然得出默认值为BStr的结论。它在哪里说默认值是LPStr? - Jens Mühlenhoff
它不会。但是如果您没有使用MarshalAs指定,那么您会得到LPTStr。 - David Heffernan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接