Правильный способ использования нескольких файлов .IDL (MIDL) в одном проекте Windows Runtime Component C ++ / WinRT - PullRequest
0 голосов
/ 06 июня 2019

Visual Studio 2019. Проект компонента среды выполнения Windows C ++ / WinRT.

Как выполнить и выполнить рекомендацию: «Мы рекомендуем объявлять каждый класс среды выполнения на своем собственном языке определения интерфейса (IDL) (.idl) для оптимизации производительности сборки при редактировании файла IDL и для логического соответствия файла IDL его сгенерированным файлам исходного кода. Visual Studio объединяет все полученные файлы .winmd в один файл с тем же именемв качестве корневого пространства имен. Этот окончательный файл .winmd будет тем, на который ссылаются потребители вашего компонента. "

https://docs.microsoft.com/en-us/windows/uwp/cpp-and-winrt-apis/author-apis

В том же проекте я могу добавить второй (третийи т. д.) .IDL-файл с помощью Project-> Add New Item-> Midl File (.idl).Кажется, это работает нормально ?!Затем я вручную добавляю связанные файлы .h и .cpp для каждого файла .IDL.Выполните сборку для создания заглушек, затем вручную скопируйте и «заполните» эти файлы перед окончательной успешной сборкой.Таким образом, у меня есть один файл IDL на класс выполнения со связанными заголовками и файлами реализации, включая любые другие файлы (файлы c ++ .h и .cpp), необходимые для реализации.Поскольку мне нужно добавить функциональность в интерфейс, я просто редактирую файл IDL, перестраиваю и добавляю функциональность в заголовочные файлы и файлы реализации C ++.

Это то, что было рекомендовано?!?

Когда ядобавьте .IDL-файл, а затем вручную добавьте связанные .h и .cpp, они не отображаются «под» .IDL-файлом, как исходные, когда я создавал новый проект.Является ли это просто визуальным изяществом Solution Explorer ИЛИ означает ли это, что у меня что-то не так?!?

Я планирую создать несколько проектов "C ++ / WinRT WRC" (по одному на каждое пространство имен, каждый из которых состоит из нескольких классов времени выполненияинтерфейсы с отдельными файлами .IDL / .h / .cpp, как описано выше. Затем я ссылаюсь на все проекты (проект на проект) в моем отдельном приложении C # / UWP.

Я на самом деле пытаюсь реализовать пользователяинтерфейс, позволяющий мне использовать большую кодовую базу математических / инженерных классов C ++, которые реализуют очень специфический и запатентованный тип моделирования электронных схем, уже существующий и запрограммированный в C ++ и скомпилированный в виде консольного приложения. Пользовательские данные относительно малыпо сравнению с обработкой, которая имеет место для генерации вывода.

...