Question

Nous utilisons notre DLL d'assemblage .NET au sein de C ++ natif via COM (CCW). Chaque fois que je crée une nouvelle version de ma DLL, je dois envoyer deux fichiers (.dll et le fichier .tlb correspondant) à l'équipage qui l'utilise dans leur code.

Est-il possible d'incorporer un fichier .tlb en tant que ressource dans un fichier DLL .NET?

Était-ce utile?

La solution

Ce n’est pas vraiment simple de faire cela avec Visual Studio .NET, mais cela peut être fait. Au niveau de base, voici ce que vous devez faire:

  1. Générez votre fichier TLB, par exemple, "VotreLibrary.tlb".

  2. Créez un fichier de script de ressource Win32 appelé, par exemple, "VotreLibrary.rc". en utilisant un éditeur de texte (tel que le Bloc-notes ou Fichier / Nouveau / Fichier ... / Fichier texte dans Visual Studio).

  3. Dans le fichier de script, tapez le texte suivant (mais remplacez bien sûr le nom de fichier TLB):

    1 typelib "VotreBibliothèque.tlb"

  4. Enregistrez le fichier de script dans le même dossier que le fichier TLB.

  5. À partir d'une invite de commande Visual Studio, accédez au dossier contenant le fichier de script et compilez-le à l'aide de la commande suivante:

    rc YourLibrary.rc

    Ceci générera un fichier de ressources Win32 dans le même dossier appelé "YourLibrary.res".

  6. Dans Visual Studio, cliquez avec le bouton droit de la souris sur le nœud du projet (par exemple, "Votre bibliothèque") dans l'explorateur de solutions, puis sélectionnez Propriétés.

  7. Dans l'onglet Application, sous "Ressources", sélectionnez le "Fichier de ressources". et naviguez jusqu’à l'option " VotreLibrary.res " fichier de l'étape 5.

  8. Enregistrez et reconstruisez le projet.

Le TLB sera désormais incorporé en tant que ressource dans la DLL de sorte que d'autres applications COM puissent le lire.

Si vous régénérez le fichier TLB ultérieurement, vous devrez répéter l'étape 5 pour recompiler le fichier de ressources et l'étape 8 pour intégrer la nouvelle version à la DLL.

Cela étant dit, vous pourrez peut-être automatiser certaines de ces choses avec Build Events ou en insérant des cibles MSBuild personnalisées dans votre fichier de projet, mais il s’agit d’une toute autre discussion.

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