Oxygene for .NET で DLL (WindowsControlLibrary) を作成する方法の例がどこにあるか教えてもらえますか?
古い Delphi では、エクスポート セクションを作成します。
2 に答える
Delphi Prism を使用してアンマネージ DLL エクスポートを作成し、それを Delphi 2010 で呼び出すには、次の手順を実行する必要があります。
Delphi プリズムでは:
- ファイル | 新しい | 計画
- 左側のツリー ビューで、Delphi Prism を選択します。
- Windows クラス ライブラリを選択
OK を押します。
これにより、Windows クラス ライブラリのテンプレートが作成されます。
プロジェクト「ClassLibraryX」を右クリックし、プロパティを選択します。
- 互換性の下で「安全でないコードを許可する」を選択します
- ビルドの下で、一般セクションを見つけて、CPU タイプを「x86」に変更します。
- 作成された「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」
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);
終わり;
終わり。