CAM API
  • CAM API
v20.0.1
Search Results for

    Show / Hide Table of Contents

    Поддержка C++ в CAMAPI

    Экспортируемая функция

    Native DLL должна экспортировать функцию, которая служит entry point:

    extern "C" __declspec(dllexport) void* __stdcall CreateInstanceOfExtension(const wchar_t* PluginID) {
      // create instance of your class
      IExtensionPtr resultPtr = new ExtensionUtilityExample();
    
      // modify as pointer
      resultPtr.AddRef();
      void* res = resultPtr.GetInterfacePtr();
      return (res);
    }
    

    Логика функции может быть сложнее, однако она должна возвращать указатель на объект с увеличенным reference count.

    Подключение SDK

    SDK поставляется в пакете SprutTechnology.CAMAPI.SDK.tlb. В BuildSystem можно настроить загрузку и распаковку пакета в заданный каталог перед компиляцией. Затем этот каталог необходимо подключить в настройках проекта C++.

    В файле build.cs:

    • Добавьте в список ManagerProps:
    new RestorerNugetProps
    {
        Name = "RestorerNuget",
        DepsProp = new List<RestorerDepProp>
        {
            new()
            {
                PackageId = "SprutTechnology.CAMAPI.SDK.tlb",
                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#.

    In this article