2010-02-12 2 views
5

Je rencontre des problèmes lors de l'utilisation d'une DLL VB.NET dans un programme VB6. J'ai déjà créé ma DLL avec le GuidAttribute, utilisé le RegAsm pour créer un tlb et l'ai ajouté aux références de mon programme VB6. Le problème survient lorsque j'essaie de créer l'objet à l'aide de la fonction CreateObject, mais l'erreur suivante apparaît: "Le composant ActiveX ne peut pas créer d'objet".Je veux utiliser une DLL VB.NET dans un programme VB6. C'est possible?

Je ne sais pas s'il me manque une déclaration sur VB.NET pour l'utiliser comme DLL ou si je n'utilise pas correctement la fonction CreateObject.

+0

Mon plus: Si je mets "Make COM visible" puis utilisez la dll dans VB6, est que possible? –

Répondre

0

vous devez vous assurer que votre composant est correctement enregistré pour com interop .. dans l'onglet Propriétés du projet il y a une option case à cocher pour activer ceci, vous êtes sur le bon chemin avec la création d'un type de bibliothèque vb6, vous pouvez simplement ajouter une référence à celui-ci comme n'importe quel autre compentent com. cependant en fait l'enregistrer plutôt que de créer un fichier tlb.

Lorsque vous enregistrez un assembly à utiliser par COM, Regasm.exe ajoute des entrées au Registre sur l'ordinateur local. Plus précisément, il crée des clés de registre dépendant de la version qui permettent à plusieurs versions du même assembly de s'exécuter côte à côte sur un ordinateur. La première fois qu'un assembly est enregistré, une clé de niveau supérieur est créée pour l'assembly et une sous-clé unique est créée pour la version spécifique. Chaque fois que vous enregistrez une nouvelle version de l'assembly, Regasm.exe crée une sous-clé pour la nouvelle version. Après l'enregistrement d'un assembly à l'aide de Regasm.exe, vous pouvez l'installer dans le cache de l'assembly global afin qu'il puisse être activé à partir de n'importe quel client COM. Si l'assemblage ne doit être activé que par une seule application, vous pouvez le placer dans le répertoire de cette application.

si vous êtes intéressé par ce que l'outil génère pour le registre utiliser

regasm {chemin à votre Assemblée} .dll /regfile:myTest.reg

0

Difficile à dire avec les informations que vous avez fourni , mais on dirait que vous n'avez pas trouvé l'ensemble trouvable. De MSDN:

Sous la clé HKCR \ CLSID {0000 ... 0000}, la valeur par défaut est réglé sur la ProgID de la classe, et deux nouveaux nommés valeurs, la classe et l'Assemblée, sont ajoutés. Le moteur d'exécution lit la valeur d'assemblage à partir du Registre et la transmet au résolveur d'assembly d'exécution. Le résolveur d'assembly tente de localiser l'assembly, basé sur l'assembly des informations telles que le nom et le numéro de version . Pour l'ensemble résolveur pour localiser un ensemble, l'ensemble doit être dans l'un des endroits suivants:

Le cache d'assemblage global (doit être un ensemble nom fort ).

Dans le répertoire de l'application. Les assemblys chargés à partir du chemin d'application ne sont accessibles qu'à partir de l'application . Le long d'un chemin de fichier spécifié avec l'option /codebase à Regasm.exe.

Questions connexes