Comment utiliser le fichier tlb en C?

Le fichier tlb (using regasm) est fabriqué à partir d’une dll (avec du code c #), et je peux l’utiliser en c ++ avec # import. et tout fonctionne bien. Y at-il un moyen, je peux utiliser cela en langage C? Je viens de trouver que #import est spécifique à c ++. Alors, quelqu’un peut-il s’il vous plaît me dire comment puis-je utiliser dans mon programme C?

Mon intention principale est d’utiliser la DLL COM développée en C # dans mon programme C.

Merci & Rgds, ~ Calvin

    La programmation COM en C est très douloureuse, mais pas impossible. La responsabilité s’arrête ici cependant. L’intérêt d’une bibliothèque de types est de générer automatiquement un outil avec l’interface COM et les déclarations de classe afin que vous puissiez les utiliser dans votre code. Assez similaire à un fichier .h, mais indépendant de la langue. L’équivalent .NET correspond aux métadonnées d’un assemblage.

    Le problème, c’est que l’outillage n’est pas disponible pour convertir une déclaration .tlb en C. Je suis sûr que vous connaissez #import, c’est ce qui est utilisé dans MSVC. Mais il génère du code C ++, des pointeurs intelligents qui vous aident à créer l’object COM, à appeler ses méthodes d’interface et à traiter les erreurs. S’il existe un outil disponible qui génère C, alors c’est un secret très bien caché.

    Une astuce vous vient à l’esprit: vous pouvez utiliser OleView.exe, Fichier + Afficher la bibliothèque de types pour afficher le contenu de la bibliothèque de types. Cette vue est décompilée en IDL, le langage de définition d’interface. Vous pouvez copier et coller ce texte dans un fichier .idl et le comstackr avec midl.exe avec l’option de ligne de commande / header. Cela génère un fichier .h contenant les déclarations C ++ et C des interfaces. Pour vous rapprocher, assurez-vous simplement que la bibliothèque de types est raisonnablement stable afin que vous n’ayez pas à le faire très souvent.

    Ni C, ni C ++ n’ont de directive de préprocesseur #import.

    J’ai également rencontré le même problème car j’ai besoin d’utiliser le fichier tlb en C. Et je pense que vous pouvez vérifier le lien ci-dessous qui aide

    Comment appeler un composant COM en C

    Merci, sveerap

    Vous pouvez utiliser regasm avec l’option / tlb pour enregistrer les types dans le registre de Windows. Après cela, vous pouvez créer vos instances comme des appels COM normaux à partir de code C ++.

    De MSDN:

    Lorsque vous spécifiez l’option / tlb, Regasm.exe génère et enregistre une bibliothèque de types décrivant les types trouvés dans l’assembly. Regasm.exe place les bibliothèques de types générées dans le répertoire de travail actuel ou dans le répertoire spécifié pour le fichier de sortie. La génération d’une bibliothèque de types pour un assemblage faisant référence à d’autres assemblys peut entraîner la génération simultanée de plusieurs bibliothèques de types. Vous pouvez utiliser la bibliothèque de types pour fournir des informations de type aux outils de développement tels que Visual Studio 2005. Vous ne devez pas utiliser l’option / tlb si l’assembly que vous inscrivez a été produit par l’importateur de bibliothèques de types (Tlbimp.exe). Vous ne pouvez pas exporter une bibliothèque de types à partir d’un assembly importé à partir d’une bibliothèque de types. L’utilisation de l’option / tlb a le même effet que l’utilisation de l’export de bibliothèque de types (Tlbexp.exe) et de Regasm.exe, à l’exception du fait que Tlbexp.exe n’enregistre pas la bibliothèque de types qu’il produit. Si vous utilisez l’option / tlb pour enregistrer une bibliothèque de types, vous pouvez utiliser l’option / tlb avec l’option / unregister pour annuler l’enregistrement de la bibliothèque de types. L’utilisation conjointe des deux options annulera l’inscription de la bibliothèque de types et des entrées d’interface, ce qui peut considérablement nettoyer le registre.