Как импортировать DLL в delphi-призму?
Я пытаюсь импортировать DLL в моей программе Delphi-Prism и никогда не делал этого раньше. Итак, после того, как я нашел ответ в Интернете, я собрал что-то, как указано ниже, но не работает.
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."
Что я делаю неправильно? Как вы импортируете DLL в Delphi-Prism?
Я следовал за этим вопросом о переполнении стека - Delphi Prism получает неизвестный идентификатор "DllImport", ошибка
2 ответа
Ты очень близко
Вам не нужен конструктор, поэтому вы можете удалить его:
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
сообщение для элемента управления Edit в той же форме).
MyUtils = public static class
public
[DllImport("winmm.dll", CharSet := CharSet.Auto)]
class method timeBeginPeriod(period:Integer):Integer; external;
end;
MyUtils.timeBeginPeriod(1);