Может кто-нибудь сказать мне, где найти пример создания библиотеки DLL (WindowsControlLibrary) в Oxygene для .NET?
В старой версии Delphi вы делаете раздел экспорта.
Пример DLL в Oxygene
Ответы (2)
Чтобы создать неуправляемый экспорт DLL с помощью Delphi Prism и вызвать его с помощью Delphi 2010, вы должны сделать следующее:
В Delphi Prism:
- Файл | Новый | Проект
- В дереве слева выберите Delphi Prism.
- Выберите библиотеку классов Windows
Нажмите ОК.
Это создаст шаблон для библиотеки классов Windows.
Щелкните правой кнопкой мыши проект «ClassLibraryX» и выберите «Свойства»:
- В разделе «Совместимость» выберите «Разрешить небезопасный код».
- В разделе "Сборка" найдите раздел "Общие" и измените "Тип процессора" на "x86".
- Щелкните правой кнопкой мыши на созданной вкладке «ClassLibraryX» и выберите «Сохранить выбранные элементы».
Это настраивает проект для поддержки UnmanagedExportAttribute.
Затем в коде вам нужно будет создать метод класса. В приведенном ниже примере я добавил ссылку на System.Windows.Forms.
namespace ClassLibrary2;
interface
type
Class1 = public class
private
protected
public
[UnmanagedExport('ShowMessage')]
class method ShowMessage(aMsg : String);
end;
implementation
class method Class1.ShowMessage(aMsg : String);
begin
System.Windows.Forms.MessageBox.Show(aMsg);
end;
end.
Используя PEViewer, я использовал тот, который поставляется в качестве примера в JCL, вы сможете увидеть новый экспорт. В приведенном выше примере "ShowMessage"
Если вы хотите сделать его совместимым с delphi, вы должны указать соглашение о вызовах "stdcall".
пространство имен ClassLibrary2;
интерфейс
тип Class1 = публичный класс
частный
защищенный
общественный
[UnmanagedExport ('ShowMessage'), System.Runtime.InteropServices.CallingConvention.StdCall]
метод класса ShowMessage (aMsg: String); конец;
выполнение
метод класса Class1.ShowMessage (aMsg: String);
начинать
System.Windows.Forms.MessageBox.Show (aMsg);
конец;
конец.