2012-04-19 11 views
0

私は、うまく動作するdllに接続するc#クラスを持っています。アンマネージコードをC#からデルファイにインポートする

私はDelphiでも同じ機能が必要です。それをする最善の方法は何ですか?私はDelphiで再びすべてのインポートを書きたいとは思わない。

/// Return Type: ABS_STATUS->ABS_LONG->int 
    ///pszDsn: ABS_CHAR* 
    ///phConnection: ABS_CONNECTION* 
    [System.Runtime.InteropServices.DllImportAttribute("bsapi.dll", EntryPoint = "ABSOpen", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)] 
    public static extern int ABSOpen([System.Runtime.InteropServices.InAttribute()] [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)] string pszDsn, ref uint phConnection); 
+0

ネイティブDelphi、またはDelphi for .NET? –

+0

はい、それは.net dllではありません。私はそのC++と思います。デルファイで直接インポートする方法、私はすべてのmedhodsとデルファイのコードで関数を書き換える必要がありますか? – Ezi

+0

@Jim Mischel私はネイティブDelphiのバージョン5を使用しています – Ezi

答えて

1

Delphiで簡単です:

デルファイのC#クラスまたはそれが迅速かつ簡単に行うための他の方法をインポートする方法。これは私のC#クラス内の1つの機能が

ではあり

function ABSOpen(pszDsn: PAnsiChar; var phConnection: Cardinal): Integer; 
    stdcall; external 'bsapi.dll'; 

あなたはこれ以上の機能を持っていることは間違いありませんが、十分に簡単なものでなければなりません。私の場合は、元のC++ヘッダーファイルに戻って、p/invokesよりも翻訳がはるかに簡単になるはずです。

p/invoke用の優れた変換ツールはDelphiのインポートユニットにはありません。 DelphiのC++ヘッダーでも、私は優れた普遍的なツールがあるとは確信していません。 JEDI project which has some useful resourcesを見ることができますが、私の見解では、あなたの袖を巻き上げる時です!

+0

私はヘッダファイルを持っていますが、私のために変換を行うツールがいくつかありますか? – Ezi

+0

私は素晴らしいリソースといくつかのツールを持っているJEDIプロジェクトへのリンクを追加しましたが、私はまだあなたが手動で行うほうが良いと思います。仕事はそのようにして行われます。 –

+0

ありがとうございます。一つのことだけ..デルファイのIntPtrとは何ですか? – Ezi

関連する問題