Переписать Delphi DLL-вызовы в c # - PullRequest
1 голос
/ 30 октября 2011

Я хочу написать программное обеспечение DMX Lightcontrol на C #.Моя проблема в том, что я должен переписать DLL-вызовы из Delphi в C #.Следующий код показывает мои попытки:

// Delphi-код:

function GetDMXInterface: pchar; stdcall; external 'DMX510.dll';
function SetLevel(a: array of byte): boolean; stdcall; external 'DMX510.dll';
function GetMaxChannels: integer; external 'DMX510.dll';

// Мой собственный код C #:

[DllImport("DMX510.DLL")]
public static extern char* GetDMXInterface();
[DllImport("DMX510.DLL")]
public static extern Boolean SetLevel(Byte[] bytearray);
[DllImport("DMX510.DLL")]
public static extern int GetMaxChannels();

Следующий вопрос, как преобразоватьуказатель на символ возвращается из GetDMXInterface () в строку

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 30 октября 2011

Попробуйте, но я не знаю, работает ли это, потому что я не могу проверить это:

[DllImport("DMX510.DLL")]
public static extern StringBuilder GetDMXInterface();

Или попробуйте

[DllImport("DMX510.DLL", CharSet = CharSet.Unicode, 
 CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr GetDMXInterface();

, а затем

IntPtr ptr = GetDMXInterface(); 
string msg = Marshal.PtrToStringAuto(ptr);
...