Передача строки как PChar из CSharp в Delphi DLL

Я пытаюсь передать строку из C # в библиотеку Delphi. 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);

Я получаю нарушение доступа при доступе к значению любым способом.

Есть ли решение передать строковое значение как PChar в C #?

4 голоса | спросил Sofija 11 42010vEurope/Moscow11bEurope/MoscowThu, 11 Nov 2010 09:02:36 +0300 2010, 09:02:36

1 ответ


0

Попробуйте использовать атрибут MarshalAs, который позволяет управлять используемым собственным типом.

Список типов можно найти в MSDN:

http://msdn.microsoft.com/де-де /библиотека /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
        );
ответил Jens Mühlenhoff 11 42010vEurope/Moscow11bEurope/MoscowThu, 11 Nov 2010 10:25:59 +0300 2010, 10:25:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132