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
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 回答
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 回答