Appel de classe vb2008 dans une application vb6 [Résolu]

Signaler
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009
-
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009
-
Bonjour

J'ai créé une dll en vb 2008 que j'aimerais utiliser dans une applicaion vb6.
J'essaie mais pas moyen de l'ajouter dans les "Références" du projet.
J'ai fais le test en l'appelant à partir d'une application vb2008 et ça marche parfaitement.
Je me demande donc si cela est toujours possible?

Quelqu'un pour m'aider??
Merci


Mia

21 réponses

Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
Salut,

tiens, quelques liens qui pourrons peut être t'aider. J'avoue, j'ai juste survolé
(de très haut...) mais ça semble aller dans ton sens.

- Real Stories of .NET Interop: C#, VB.NET and VB6
- Using the .NET Library and XML in VB6
- How to call a Visual Basic .NET or Visual Basic 2005 assembly from Visual Basic 6.0
- COM Interop Exposed
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

Ok les gars, merci pour votre aide.
J'ai trouvé, je n'avais pas spécifié de sub New sans argument.

Merci à vous

Mia
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
lui faut être ineroperable via COM

http://msdn.microsoft.com/fr-fr/library/t9yw5271.aspx

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

Merci pour la réponse rapide malheureusement ça ne marche pas.

J'ai bien mis le flag "Inscrire Com pour interop".
par contre je vois dans les options avancées de compilation, un point "Framework cible" et je n'y vois que les frameworks 2, 3 et 3.5. cela voudrait dire que ce n'est pas compatible avec vb6???



Mia
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
ta dll sera toujours de l'interpreté.
il te faut toujours cibler nu framework donné qui sera requis par le client.

y'a juste une couche supplémentaire pour qu'un client COM (VB6 dans ton cas) sache l'interface proposée par ta classe ; pour que ta dll puisse être exploitée par ce client.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

Je n'ai pas de fichier Tlb généré, et lorssque je veux le générer avec regasm, je reçois le message suivant :

RegAsm Error: Could not load file or assembly 'Regcode .....' or one of its dependecies. The system cannot find the specified file. Or le chemin d'acces est correct.


Mia
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

Je te remercie pour ton message, j'avais déjà trouvé certaine de ces infos mais il semblerait que ce soit une dll vb2008 qui pose prob , pfffff...


"Salut,

tiens, quelques liens qui pourrons peut être t'aider. J'avoue, j'ai juste survolé
(de très haut...) mais ça semble aller dans ton sens.

- Real Stories of .NET Interop: C#, VB.NET and VB6
- Using the .NET Library and XML in VB6
- How to call a Visual Basic .NET or Visual Basic 2005 assembly from Visual Basic 6.0
- COM Interop Exposed "

Mia
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
"or one of its dependecies"


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

ben oui, mais je bloque là.

Mia
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
t'as pas a lancer regasm.... cette opération est inclue dans visual studio !


http://support.microsoft.com/kb/817248/en-us/


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

Salut, c encore moi


Voilà, après avoir réussi à créé ma DLL, j'ai fais fonctionner mon application sous XP et là tout va bien, mais lorsque je veux l'exécuter sous vista, je reçois un message d'erreur "Can't create object ...."

Je pensais que c'était parce que la dll ou le .Tlb n'était pas enregistré mais j'ai beau essayer de l'enregistrer (en tant qu'admin), je n'y parviens pas. Je reçois le message suivant : "le module a été chargé mais le point d'entrée dllregisterserver est introuvable".

Qqun pour m'aider???

Mia
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
héhé, seules les Dll ActiveX s'enregistrent...

là, il s'agit d'une assembly .NET....

voir à utiliser un .Manifest. je pense

les tutoriels décrits plus haut doivent en parler, j'imagine.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

Rien à faire

Je ne parviens pas à faire reconnaitre ma dll par mon application vb6 sous vista.

Mia
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
utilises tu un .manifest ?

parles tu bien d'un exe compilé (ou en debug) ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

Je vais t'expliquer la situation:

J'ai une ancienne application vb6 et j'ai créé ce que j'appelle une DLL en vb2008 pour exécuter l'envoi d'email particuliers. Dans mon applic VB6, j'ajoute une référence à cette dll. Après avoir fait la déclaration d'un objet à partir de cette dll, j'assigne différents champs faisant partie de cette dll et puis, j'exécute une methode de cette dll.
Sur mes pc de production (un XP et un Vista), j'ai un lien vers l'exe de l'app VB6 qui se trouve sur un server. L'application vb6 fonctionne très bien sur ces 2 pc.
Maintenant j'ai ajouté la dll et le .tlb sur le server (dans le répertoire de l'application vb6, j'ai aussi essayé de les mettre dans le répertoire System32) afin de profiter de l'envoi des mails. Sur mon pc XP, tout se passe correctement, par contre sur le pc Vista, je reçois le message "Can't create object".

Je n'ai aucun manifest.

J'ai créé la dll avec VB2008 en sélectionnant "creation d'une classe com" et ensuite je la génère. Et je parviens à l'utiliser correctement sous xp.



Mia
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
tlb ? inutile... ca sert a rien de le déployer.... utile au développement uniquement.

le message "dllregisterserver non trouvé..." indique que ta dll n'est PAS à enregistrer. Elle ne contient pas d'infos a enregistrer dans la base de registres indiquant les classes et autres qu'elle expose. D'ou la necessité pour le dev d'utiliser un .tlb.

sur Xp, un RegSvr ne doit pas non plus fonctionner.

avec un exe, il te faut un manifest... Il faut que windows puisse faire el lient entre le ProgId de ta classe et le fichier.dll



Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

Ok pour le manifest en vb 2008 mais il n'y en a pas en vb6 selon moi
???

Mia
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
"selon toi" ^^ héhé, c'esty pas a toi qu'il est déstiné, ni à VB, mais à Windows.

au chargement de ton exe, windows va chercher nom_exe.exe.manifest

ton manifest décrira alors ta dll et remplacera l'enregistrement dans la registry.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

Je veux bien moi, mais mon application vb6 ne génére pas de manifest mais uniquement un .exe

Mia
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
non, mais lors de la compilation de ta dll, tu dois en avoir un qui se génère.

j'ai pas de quoi maquetter et t'aider de manière moins théorique, dsl

Renfield - Admin CodeS-SourceS - MVP Visual Basic