Как Visual Studio определяет порядок компиляции файлов IDL?

У меня есть проект COM, содержащий несколько файлов IDL, некоторые из которых импортированы в другие. Как Visual Studio решает, какие из них компилировать (используя MIDL) в первую очередь?

Я хочу контролировать порядок. У меня есть основной файл IDL, который содержит объявление моей библиотеки с несколькими импортами, и я получаю сообщение об ошибке сборки, если он не скомпилирован первым.

(Если что-то из этого звучит действительно странно... Я новичок в COM/ATL, и это действительно очень запутанно).


person M. Dudley    schedule 13.07.2010    source источник
comment
Пока у вас правильно настроены зависимости, Visual Studio должна компилировать вещи в правильном порядке.   -  person ChrisF    schedule 14.07.2010
comment
Как вы устанавливаете зависимости между файлами IDL? Я использую операторы импорта, как вы использовали бы операторы #include в обычном C++.   -  person M. Dudley    schedule 14.07.2010


Ответы (2)


Вы не можете попросить Visual Studio создать файлы .ild в определенном порядке. Вместо этого вы можете #include преобразовать некоторые файлы .idl в другие файлы .idl и установить для импортированных файлов статус «исключено из сборки». Таким образом, MIDL не будет компилировать импортированные файлы отдельно, вместо этого он включит их содержимое в определенное место другого файла и скомпилирует как часть этого файла (тот же эффект, что и с препроцессором C #include).

person sharptooth    schedule 14.07.2010

Вы можете заставить Visual Studio создавать вещи в любом порядке, который вы хотите, есть 2 способа сделать это:

  1. Добавьте шаг предварительной сборки, на котором вы можете заставить его построить те, которые вы хотите построить в первую очередь.

  2. Сначала поместите те, которые вы хотите построить, в отдельный проект и заставьте его сначала построить этот проект, сделав другой зависимым от него.

Это то, что вы должны сделать, если вы не можете изменить файлы idl. Однако, если один файл idl действительно зависит от другого, и вы можете изменить их, сделайте то, что было предложено выше, и заставьте один файл включать другой.

person CashCow    schedule 29.12.2011