0

Delphi-prism プログラムに dll をインポートしようとしていますが、これまでに行ったことはありません。それで、オンラインで答えを見つけた後、次のようにまとめましたが、うまくいきません。

  MyUtils = public static class
  private
    [DllImport("winmm.dll", CharSet := CharSet.Auto)]
    method timeBeginPeriod(period:Integer):Integer; external;
  protected
  public
    constructor;
  end;

これが私がそれを使用する方法です:

var tt := new MyUtils;
tt.timeBeginPeriod(1);

プログラムを実行すると、次のエラーが発生し続けます。

  • 「MyUtils」はアクセス可能なコンストラクターを提供しません。
  • 「System.Object」には、式「tt.timeBeginPeriod」に「timeBeginPeriod」の定義が含まれていません。

私は何を間違っていますか?delphi-prismでdllをインポートするにはどうすればよいですか?

私はこのstackoverflowの質問に従いました - Delphi Prism Getting Unknown Identifier "DllImport" error

4

2 に答える 2

1
  MyUtils = public static class
  public
    [DllImport("winmm.dll", CharSet := CharSet.Auto)]
    class method timeBeginPeriod(period:Integer):Integer; external;
  end;


MyUtils.timeBeginPeriod(1);
于 2012-10-31T19:58:58.633 に答える
1

あなたはとても近くにいます。

コンストラクターは必要ないので、削除できます。

MyUtils = public static class
private
  [DllImport("winmm.dll", CharSet := CharSet.Auto)]
  method timeBeginPeriod(period:Integer):Integer; external;
protected
public
end;

関数が宣言されているユニットの外部から関数を呼び出す場合は、そのtimeBeginPeriod可視性を に変更する必要がありますpublic

関数を呼び出すためにインスタンスを作成する必要もありません。

MyUtils.timeBeginPeriod(1);

代わりに宣言して使用するアプリでこれをテストしたSendMessageので、実際に機能することを簡単に確認できました (EM_SETTEXT同じフォームの編集コントロールにメッセージを送信しました)。

于 2012-10-31T17:10:00.630 に答える