0

正常に動作するdllに接続するac#クラスがあります。

今、私はDelphiで同じ機能が必要です。それを行うための最良の方法は何ですか?Delphiですべてのインポートを再度記述したくありません。デルファイでc#クラスをインポートする方法、またはそれをすばやく簡単に行う他の方法はありますか。

これは私のc#クラスの1つの関数です:

    /// 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);
4

1 に答える 1

1

Delphiではこれは簡単です。

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

これよりも多くの機能があることは間違いありませんが、それらはすべて十分に簡単なはずです。もし私があなたなら、元のC ++ヘッダーファイルに戻ります。これは、p/invokesよりもはるかに簡単に翻訳できるはずです。

Delphiインポートユニットへのp/invoke用の優れた変換ツールはないと思います。DelphiへのC++ヘッダーの場合でも、優れたユニバーサルツールがあるとは確信していません。いくつかの有用なリソースがあるJEDIプロジェクトを見ることができますが、私の見解では、それはあなたの袖をまくり上げる時です!

于 2012-04-19T18:25:51.760 に答える