如何在delphi-prism中导入DLL?

时间:2012-10-31 15:05:45

标签: .net dllimport delphi-prism oxygene

我正在尝试在我的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”在表达式中不包含“timeBeginPeriod”的定义 “tt.timeBeginPeriod。”

我做错了什么?如何在delphi-prism中导入dll?

我遵循了这个stackoverflow问题 - Delphi Prism getting Unknown Identifier "DllImport" error

2 个答案:

答案 0 :(得分: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的应用程序对此进行了测试,因此我可以轻松检查以确保它确实有效(我向同一表单上的Edit控件发送了EM_SETTEXT消息)

答案 1 :(得分:1)

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


MyUtils.timeBeginPeriod(1);