Поддержка Delphi в CAMAPI
Экспортируемая функция
Native DLL должна экспортировать функцию, которая служит entry point:
function CreateInstanceOfExtension(PluginID: WideString): NativeUInt;
begin
// create instance of your class
var res: IExtension;
if SameText(PluginID, TExtensionUtilCommonDll.GetIdent()) then
res := TExtensionUtilCommonDll.Create() as IExtension
else
raise Exception.Create('Unknown ID ' + PluginID);
// modify as pointer
res._AddRef;
result := NativeUInt(res);
end;
Логика функции может быть сложнее, однако она должна возвращать указатель на объект с увеличенным reference count.
Подключение SDK
SDK поставляется в пакете SprutTechnology.CAMAPI.SDK.bpl.x64. В BuildSystem можно настроить загрузку и распаковку пакета в заданный каталог перед компиляцией. Затем этот каталог необходимо подключить в настройках проекта Delphi.
В файле build.cs:
- Добавьте в список
ManagerProps:
new RestorerNugetProps
{
Name = "RestorerNuget",
DepsProp = new List<RestorerDepProp>
{
new()
{
PackageId = "SprutTechnology.CAMAPI.SDK.bpl.x64",
Version = "18.2.0",
OutDir = Path.Combine(RootDirectory.Parent, "SDK")
}
}
}
- Задайте соответствия:
settings.ManagerNames.Add("restorer", "Debug", "RestorerNuget");
settings.ManagerNames.Add("restorer", "Release", "RestorerNuget");
- Добавьте восстановление зависимостей перед компиляцией в целевую задачу:
private Target Compile => _ => _
.Executes(() =>
{
_buildSpace.Projects.Restore(Variant);
_buildSpace.Projects.Compile(Variant, true);
});
Таким же способом можно подключить любой другой пакет — аналогично PackageReference в проектах C#.