2010-07-13 24 views
2

J'ai un projet COM qui contient un certain nombre de fichiers IDL, dont certains sont importés dans d'autres. Comment Visual Studio décide-t-il de compiler (en utilisant MIDL)?Comment Visual Studio détermine-t-il l'ordre de compilation des fichiers IDL?

Je veux contrôler la commande. J'ai un fichier IDL maître qui contient ma déclaration de bibliothèque avec plusieurs importations, et j'obtiens une erreur de construction si ce n'est pas la première compilée.

(Si tout cela semble vraiment bizarre ... Je suis nouveau sur COM/ATL, et c'est vraiment, vraiment déroutant).

+0

Tant que vos dépendances sont configurées correctement, Visual Studio doit compiler les éléments dans le bon ordre. – ChrisF

+0

Comment définir les dépendances entre les fichiers IDL? J'utilise des instructions d'importation, comme si vous utilisiez des instructions #include en C++ normal. –

Répondre

4

Vous ne pouvez pas demander à Visual Studio de générer des fichiers .ild dans un ordre spécifique. Au lieu de cela, vous pouvez #include certains fichiers .idl dans d'autres fichiers .idl et définir les fichiers que vous avez importés "exclus de la construction". De cette façon, MIDL ne compilera pas les fichiers importés séparément, mais inclura leur contenu à l'endroit spécifique d'un autre fichier et compilera en tant que partie de ce fichier (même effet qu'avec C preprocesor #include).

0

Vous pouvez Visual Studio construire des choses dans l'ordre que vous voulez, il y a 2 façons de le faire:

  1. Mettre dans une étape de pré-construction dans laquelle vous pouvez l'obtenir pour construire ceux que vous souhaite construire en premier.

  2. Mettez d'abord les projets que vous voulez construire dans un projet séparé et construisez-le d'abord en faisant en sorte que votre autre projet en dépende.

C'est ce que vous devriez faire si vous ne pouvez pas modifier les fichiers idl. Si toutefois un fichier idl dépend vraiment d'un autre et que vous pouvez le modifier, faites ce qui est suggéré ci-dessus et obtenez-en un pour inclure l'autre.