2010-03-18 4 views
2

Contexte:Comment créer des méthodes d'interface en utilisant des types .tlb dans VS C++?

  1. Le fichier TLB contient des interfaces écrites dans un langage 'X'. Je n'ai pas de fichier .h, .idl, .tlh ou tout autre fichier d'en-tête - juste le fichier .TLB. La langue 'X' n'exporte pas .h, .idl, etc.
  2. J'utilise l'assistant VS pour ajouter un objet ATL simple à mon projet ATL.

Je souhaite ajouter une méthode à l'interface de mon objet ATL simple qui utilise l'un des types définis .TLB pour un paramètre.

// Something like the following in the .idl file: 
interface ISomeInterface : IUnknown { 
    HRESULT SomeMethod([in] ITypeFromTLB* aVal); // ITypeFromTLB declared in .TLB file. 
}; 

Comment est-ce que je peux faire ceci? J'espère un wizard, ou une ligne dans la déclaration d'interface .idl qui apporterait l'information .tlb. midl's include (no.tlb), import (no tlb) et importlib (library only) ne semblent pas fournir de solution (I besoin de proxy/stub pour fonctionner, donc je ne peux pas mettre cela dans la déclaration de bibliothèque avec la commande importlib).

Répondre

2

Utilisez #import dans cpp/h pour apporter des interfaces TLB à votre espace de noms.

+1

Ceci n'est pas disponible dans le compilateur midl. – Steven

+0

Ceci est une directive du compilateur C/C++, pas du compilateur MIDL. Mettez-le juste après votre – wqw

+1

de # include J'ai besoin d'apporter les informations dans mon fichier IDL afin que je puisse déclarer une nouvelle interface. #import n'apporte que l'information dans mes fichiers .h et .cpp. – Steven

1

Sur la ligne de commande de Visual Studio, effectuez une opération oleview. Ensuite, File -> View Type Lib, donne le chemin d'accès complet à votre fichier foo.tlb. Maintenant, dans ITypeLib Viewer, faites Fichier -> Enregistrer sous .. et vous pouvez exporter tous les 3 (.h, .idl, .c) à partir de là.

+0

notez que vous devez exécuter 'oleview' en tant qu'administrateur pour que cela fonctionne – jnnnnn

Questions connexes