Я пытаюсь передать строку из C# в Delphi построенную DLL. Delphi DLL ожидает PChar.Передача строки как PChar из CSharp в Delphi DLL
Вот на экспорт Delphi
procedure DLL_Message(Location:PChar;AIntValue :integer);stdcall;
external 'DLLTest.dll';
C# импорт (в прошлом один я попробовал, были строки, символ * иая строка ...)
[DllImport(
"DLLTest.dll",
CallingConvention = CallingConvention.StdCall,
CharSet = CharSet.Ansi,
EntryPoint = "DLL_Message"
)]
public static extern void DLL_Message(IntPtr Location, int AIntValue);
Я получаю нарушение прав доступа доступ значения в любом путь.
Есть ли решение передать строковое значение как PChar в C#?
MarshalAs здесь не нужен. Это по умолчанию маршалинг. Аналогично для параметров атрибуту DllImport. Требуется только имя файла. –
Вы в этом уверены? Разве это не по умолчанию UnmanagedType.LPWStr (UTF-16)? –
Видимо, это BStr: http://msdn.microsoft.com/en-us/library/s9ts558h.aspx –