Question

Je suis en train d'écrire une DLL en mode mixte, appelons-le « Client », pour remplacer certaines classes non gérés par leurs équivalents gérés. Tout fonctionne bien sur ma machine personnelle, mais quand je vérifie le code source, notre machine de construction ne construira pas le projet. Il ne reconnaît pas les classes gérées j'utilise d'une autre DLL, appelée 'Core.

Je pense que la question a à voir avec les en-têtes précompilés. Voici pourquoi:

Pour utiliser les classes de « Core », j'ai ajouté une référence au projet « de base » dans le projet « client ». Si je supprime cette référence, puis construire le projet sur ma machine personnelle, il fonctionne toujours. Le PCH CLR ne recompiler pas après avoir supprimé la référence, cependant. Si je recompiler le PCH CLR, puis compilez le projet, il échoue avec les mêmes erreurs que je reçois sur la machine de construction: les classes gérées ne sont pas reconnues.

Il me semble que les classes gérées de DLL que vous importez sont définis dans l'en-tête précompilés. Je ne l'ai pas été en mesure de vérifier, mais c'est la meilleure estimation que j'ai. Quelqu'un at-il une idée qu'ils peuvent apporter sur cette question? Sont des références de projet dans DLL mixte résolu en mettant des crochets dans le PCH géré?

Procédure pour reproduire

Ce qui suit fait aucun sens pour moi:

  1. Obtenir client construire.
  2. Supprimer la référence du client au cœur. Compiler Client. Client construit STILL. Cela ne devrait pas.
  3. Recompilez le PCH client, puis compiler Client. Compile client échoue: les classes « de base » ne sont pas définies. Ce comportement est normal.
  4. Ajouter une référence à Core, compiler. Compile client échoue pour la même raison. Cela ne devrait
  5. Recompilez le PCH client, puis compiler Client. Client compile très bien.

Ma conclusion de cette expérience est que les références sont insérées dans le projet via les en-têtes précompilés, et que quelque chose est rompu avec la façon dont cela fonctionne, au moins sur notre machine de construction.

Était-ce utile?

La solution

Il y a une autre façon d'ajouter des références à un dll mode géré / mixte en C ++ / CLI - il est d'ajouter #using Core.dll au client. Cela pourrait résoudre votre problème de construction.

Autres conseils

Il ne peut pas fonctionner comme ça peut, parce que vous n'avez pas besoin d'utiliser un en-tête précompilé.
Tout un PCH n'est vous permet d'accélérer la construction.
Il ne fait pas quelque chose de spécial avec des références .....

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top