首页 文章

用c#重写Delphi DLL调用

提问于
浏览
1

我想用C#编写DMX Lightcontrol软件 . 我的问题是我要重写从Delphi到C#的DLL调用 . 以下代码显示了我的尝试:

//德尔福代码:

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#-Code:

[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()返回的char指针转换为String

谢谢你的帮助!

1 回答

  • 2

    尝试,但我不知道它是否有效,因为我无法测试它:

    [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);
    

相关问题