0

Oxygene for .NET で DLL (WindowsControlLibrary) を作成する方法の例がどこにあるか教えてもらえますか?
古い Delphi では、エクスポート セクションを作成します。

4

2 に答える 2

2

Delphi Prism を使用してアンマネージ DLL エクスポートを作成し、それを Delphi 2010 で呼び出すには、次の手順を実行する必要があります。

Delphi プリズムでは:

  1. ファイル | 新しい | 計画
  2. 左側のツリー ビューで、Delphi Prism を選択します。
  3. Windows クラス ライブラリを選択

OK を押します。

これにより、Windows クラス ライブラリのテンプレートが作成されます。

プロジェクト「ClassLibraryX」を右クリックし、プロパティを選択します。

  1. 互換性の下で「安全でないコードを許可する」を選択します
  2. ビルドの下で、一般セクションを見つけて、CPU タイプを「x86」に変更します。
  3. 作成された「ClassLibraryX」タブを右クリックし、「選択した項目を保存」を選択します

これにより、プロジェクトがUnmanagedExportAttributeをサポートするように設定され ます。

次に、コードでクラス メソッドを作成する必要があります。以下の例では、System.Windows.Forms への参照を追加しました。

namespace ClassLibrary2;

interface

type
  Class1 = public class
  private
  protected
  public
    [UnmanagedExport('ShowMessage')]
    class method ShowMessage(aMsg : String);
  end;

implementation

class method Class1.ShowMessage(aMsg : String);
begin
 System.Windows.Forms.MessageBox.Show(aMsg);  
end;

end.

PEViewer を使用して、JCLの例として出荷されたものを使用しました。新しいエクスポートを確認できるはずです。上記の例では「ShowMessage」

于 2009-10-29T00:13:31.303 に答える
1

Delphi と互換性を持たせたい場合は、「stdcall」呼び出し規約を指定する必要があります。

名前空間 ClassLibrary2;

インターフェース

Type Class1 = パブリック クラス

プライベート

保護された

公衆

[UnmanagedExport('ShowMessage'), System.Runtime.InteropServices.CallingConvention.StdCall]

クラスメソッド ShowMessage(aMsg : String); 終わり;

実装

クラスメソッド Class1.ShowMessage(aMsg : String);

始める

System.Windows.Forms.MessageBox.Show(aMsg);

終わり;

終わり。

于 2010-08-13T18:50:05.940 に答える