2010-06-10 5 views
1

J'ai créé un serveur COM ATL dans VC++ 2005. Je veux réaliser une interface définie dans une bibliothèque (* .olb). Je sais que je vais voir l'interface si je #import cette olb (en .tlh.tli). Mais je ne peux pas créer de réalisation de bout pour l'interface avec "Assistant d'interface d'implémentation" car cette interface est absente dans la liste "Interfaces" (à la fois pour les options "Registre" et "Fichier"). Pourquoi est-ce possible une telle situation? Et comment puis-je générer automatiquement la réalisation du bout? Merci d'avance.ATL "Implémenter l'assistant d'interface"

Répondre

0

J'ai trouvé un bug dans le projet. C'était un bazar avec les bibliothèques.

1

Vous pouvez modifier le fichier .idl et utiliser

[ 
    ... 
] 
library Something 
{ 
    importlib("somelibrary.olb"); 
    ... 
} 

C'est gênant cependant, la déclaration importlib doit apparaître dans le bloc de la bibliothèque . Cela est nécessaire car la bibliothèque de types contient probablement des définitions de coclasse.

Ce que vous voulez vraiment, c'est utiliser l'instruction import pour importer le IDL qui a créé la bibliothèque de types. Moins les coclasses. Si vous n'avez pas l'IDL, vous pouvez le recréer avec OleView.exe, File + View Typelib. Copiez et collez les définitions d'interface que vous voulez dans votre propre fichier .idl, puis utilisez l'instruction d'importation MIDL dans votre IDL.

+0

J'ai trouvé un bug dans le projet. C'était un bazar avec les bibliothèques. En tout cas, merci pour oleview façon. J'aime vraiment ça. –

Questions connexes