Comment générer une bibliothèque de types à partir d'une DLL COM non managée
J'ai de l'utilisation du tiers, non géré COM dll dans mon .NET application. J'ai besoin de modifier la présente assemblée pour produire un personnalisé BRF. Afin de Edit Assembly Interop j'ai besoin de la bibliothèque de type de l'assemblée particulière. Quelqu'un peut-il m'expliquer comment Comment générer une bibliothèque de types de dll COM non managé?
Il n'y a pas d'option dans regsvr32 pour générer une bibliothèque de types.
Merci,
Meilleures Salutations,
Robo.
source d'informationauteur RoboAlex | 2011-02-14
Vous devez vous connecter pour publier un commentaire.
Si tout ce que vous essayez de faire est de créer un Assembly Interop à partir d'une dll native (et la DLL native intègre le TLB comme une ressource), vous pouvez les appeler tlbimp directement sur la dll:
tlbimp Foo.dll /out:Interop.Foo.dll
Qui va générer Interop.Foo.dll. Vous pouvez ensuite utiliser ildasm pour modifier l'IL:
Vous avez besoin de la OLE-COM Object Viewerdisponible dans le cadre de ce qui est la dernière Windows SDK. Ensuite, vous pouvez aller dans Fichier->Type d'Affichage Lib et économiser de l'IDL vers un fichier texte. Ensuite, vous pouvez utiliser MIDL (également partie du kit de développement logiciel Windows) pour régénérer une TLB et le fichier d'en-tête. Quelque chose comme cela devrait le faire pour la base de cas:
Si tout ce que vous avez est que la DLL COM, vous ne pouvez pas générer une bibliothèque de type. Une bibliothèque de type décrit les interfaces COM mises en œuvre. Mais une DLL COM non managé doit simplement exposer
DllGetClassObject
. Cela ne vous obtient unIClassFactory
qui vous permet de créer de nouveaux objets si vous connaissez le type correct à l'avant.Si la bibliothèque de types est incorporé dans la DLL de Ressources et le fichier TLB lui-même est ce qui est nécessaire puis 3ème partie logiciel permet d'extraire (même si, comme d'autres l'ont souligné, cela peut ne pas être l'option la plus souhaitable).
E. g. à l'aide de Resource Hacker:
Vous pouvez désormais de référence .Fichier TLB et de construire sans exiger la DLL originale, par exemple
IDE de Visual Studio peut directement extrait binaire ressources non gérées .exe et .les fichiers dll.
Si la bibliothèque de type est enregistré en tant que ressource binaire dans un non géré COM DLL (par exemple, l'un construit à l'aide de VS natif compilateur C++), vous pouvez l'extraire comme suit:
"TYPELIB"
puis1
) dans l'arborescence des ressources.export
. Qui évoque une "Enregistrer le Fichier sous" boîte de dialogue.bin1.bin
) à quelque chose commeMyLibrary.tlb
et cliquez sur Ok.OleView.exe
(le résultat devrait être identique à ceux que vous voyez en ouvrant le .dll avec laOleView.exe
).Pour extraire les bibliothèques de types de géré Dll (par exemple, ceux qui sont intégrés à l'aide de C#), VS comprend l'outil
Tlbexp.exe
(exécuter à partir de la VS invite de commande):https://msdn.microsoft.com/en-us/library/hfzzah2c(v=vs. 110).aspx