2009-02-12 9 views
2

J'ai utilisé un didacticiel (http://support.microsoft.com/kb/317535) pour créer une classe VB.NET qui exporte une méthode COM visible pour le calcul des sommes de contrôle MD5.Appel de la bibliothèque de classes .NET (dll) à partir de VB

Le problème est que j'ai besoin d'appeler ce fichier .dll à partir d'un langage similaire à VB (Extra Basic) et il prend uniquement en charge les appels COM. Sur ma machine tout fonctionne comme un charme, mais sur le serveur de destination ça ne marche pas du tout. J'ai "Échec de la création d'objet" de l'application "VB like". Selon le tutoriel, la seule chose à faire est d'utiliser regasm pour enregistrer le .dll. Cela ne fonctionne pas. J'ai évidemment fait quelque chose de mal quand j'ai enregistré le .dll.

Que fait VS2005 pour rendre ce fichier .dll visible pour les appels COM?

J'ai essayé de uese regsvr32, mais il faild pour enregistrer le fichier .dll avec le message suivant: « xxx.dll a été chargé, mais le point d'entrée DllRegisterServer n'a pas été trouvé Ce fichier ne peut pas être enregistré. »

Cordialement Ausgar

Répondre

4

Vous ne pouvez pas utiliser Regsvr32.exe, Regasm.exe est requis. Vous devez l'exécuter avec l'argument de ligne de commande/codebase ou installer l'assembly dans le GAC. Je suppose que c'est votre problème.

Ces problèmes d'enregistrement sont toujours flous, pas du tout, car ils nécessitent un programme d'installation au lieu de Xcopy.exe. Et invoque DLL Hell si vous n'avez pas la version correctement. Ce que vous ne ferez pas si vous n'utilisez pas le GAC. Envisagez plutôt d'utiliser un manifeste contenant l'élément <clrClass>. Prenez le premier hit Google.

+0

Salut! "Prenez le premier coup de Google" de quoi? – Ausgar

+0

Crud, l'éditeur de la poste a mangé mon mot.Il est élément . –

+0

Merci beaucoup!/ Codebase a résolu tous mes problèmes! – Ausgar

0

Avez-vous essayé d'enregistrer la DLL COM en utilisant regsvr32? Je ne sais pas si regasm le fait automatiquement mais apparemment pas.

+0

HI, Oui, j'ai essayé d'utiliser regsvr32. Je reçois le message d'erreur suivant: "xxx.dll a été chargé, mais le point d'entrée DllRegisterServer n'a pas été trouvé. Ce fichier ne peut pas être enregistré" – Ausgar

+0

Ouch. :-(Malheureusement, je n'ai jamais travaillé avec COM dlls créé en .NET –

0

Il semble que vous ne disposiez pas de tous les éléments dont votre application a besoin installée ou fonctionnant sur le serveur. Certaines choses à regarder sont:

  1. Le .NET Framework est-il installé?
  2. Assurez-vous que COM fonctionne. Certaines choses fondamentales à essayer sont:
    • Insertion d'un objet dans un document WordPad.
    • Si vous pouvez exécuter WSCript, exécutez un script vbscript simple qui crée un objet.
    • Exécutez Dependency Walker sur votre EXE et assurez-vous d'avoir tout ce dont vous avez besoin.
  3. Si ce qui précède ne vous permet pas de démarrer, vous pouvez utiliser Sysinternals ProcMon pour voir à quels fichiers et entrées de registre votre application accède (et peut-être ne trouve pas). Cela devrait vous donner des indices sur ce qui se passe.
Questions connexes