2011-10-30 7 views
1

DMX LightcontrolソフトウェアをC#で作成したいと思います。私の問題は、DelphiからC#にDLLコールを書き直さなければならないことです。コードに続いて、私の試みを示していますC#でDelphi 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(); 

char型のポインタを変換する方法を次の質問は(GetDMXInterfaceから返されます)を文字列に変換する

ありがとうございました!

+1

を試しをこれは: http://stackoverflow.com/questions/508227/how-to-import-const-char-api-to-c はあなたのための完璧なサウンド... – Stef

答えて

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); 
+0

@pbcoder:私はちょうど編集した私のコード。それが動作するかどうか私に教えてください... – Marco

+0

public static extern StringBuilder GetDMXInterface();動作します!ありがとう! –

+0

編集したコードのバージョンが機能しません! –

関連する問題