我正试图在delphi棱镜程序中导入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棱镜中导入dll?
我遵循了这个stackerflow问题——Delphi Prism获得未知标识符";DllImport"错误
你非常接近。
你不需要构造函数,所以你可以删除它:
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
消息)。
MyUtils = public static class
public
[DllImport("winmm.dll", CharSet := CharSet.Auto)]
class method timeBeginPeriod(period:Integer):Integer; external;
end;
MyUtils.timeBeginPeriod(1);