Question

Je suis maintenant un projet VS2010 qui a un certain nombre de bibliothèques COM références croisées. Je suis en train de configurer le projet de manière à ce qu'il est assemblable de une station de travail aléatoire qui a VS2010 installé. Le poste de travail peut être à la fois 32 et 64 bits, donc si je configure projet « registre de sortie », la construction échouera à construire sur la machine 32 bits, car DLL 64 bits ne sera pas possible de charger d'appeler DllRegisterServer.

Voici un exemple: Typelib de références du projet B Typelib du projet A. Projet C fera référence à projet B par déclaration suivante:

#import "B.tlb"

Comme références bibliothèque B A, lorsque B.tlb est importé, le compilateur essaie de types de charge de A. Donc, si A est pas enregistré, la compilation échouera avec:

error C4772: #import referenced a type from a missing type library ...

J'ai essayé d'ouvrir B.tlb en utilisant l'application OleView, et il est sûr que l'enfer ne montrant le nom du fichier de référence droit bibliothèque A si elle est enregistrée en utilisant regsvr32.

Alors, ma question est là: est-il une autre façon pour les références de bibliothèque pour se résoudre correctement, sans avoir à enregistrer TLB, juste en mettant tous les fichiers dans le même répertoire en quelque sorte, ou fixer une sorte de manifeste? Par exemple, renommer le TLB pour une bibliothèque comme .tlb ou quelque chose de ce genre.

Était-ce utile?

La solution

Essayez importer le A.tlb référencé pour la première ou la liste dans l'importation de B.tlb en utilisant l'option include ().

#import les parties de si vous pouvez éviter d'introduire dans d'autres références inutilement l'interface que vous souhaitez utiliser.

Autres conseils

Il y a une bonne option: chemin d'ajouter aux fichiers .tlb à VC ++ Annuaires -> Executable Annuaires Cela ajoute le chemin à la variable d'environnement PATH qui sera donnée au compilateur. Selon ceci: http://msdn.microsoft.com/en-us/library /sce74ah7.aspx tous .tlb REFERENCEE dans un produit importé sont recherchés uniquement dans PATH et LIB.

La façon la plus simple, il est un lieu de fichiers de tous * en dir quand ils sont utilisés.

dépend de la configuration de votre projet. Copiez tous les fichiers * de .tlb dans: $ (OutDir), $ (ProjectDir), dir où est le fichier avec #import, dir lorsque vous générez * .tlb etc

Cordialement, Mariusz

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