Appel de classe vb2008 dans une application vb6

Résolu
cs_Mia
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009
- 9 sept. 2009 à 14:53
cs_Mia
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009
- 15 sept. 2009 à 16:34
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

cs_Ayr
Messages postés
221
Date d'inscription
mercredi 9 avril 2003
Statut
Membre
Dernière intervention
13 décembre 2009
1
9 sept. 2009 à 15:48
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
3
cs_Mia
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

9 sept. 2009 à 16:10
Ok les gars, merci pour votre aide.
J'ai trouvé, je n'avais pas spécifié de sub New sans argument.

Merci à vous

Mia
3
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
9 sept. 2009 à 15:08
lui faut être ineroperable via COM

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

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

9 sept. 2009 à 15:34
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
9 sept. 2009 à 15:38
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
0
cs_Mia
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

9 sept. 2009 à 15:51
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
0
cs_Mia
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

9 sept. 2009 à 15:54
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
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
9 sept. 2009 à 15:56
"or one of its dependecies"


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

9 sept. 2009 à 16:00
ben oui, mais je bloque là.

Mia
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
9 sept. 2009 à 16:05
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
0
cs_Mia
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

15 sept. 2009 à 13:53
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
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
15 sept. 2009 à 13:57
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
0
cs_Mia
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

15 sept. 2009 à 15:28
Rien à faire

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

Mia
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
15 sept. 2009 à 15:31
utilises tu un .manifest ?

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

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

15 sept. 2009 à 15:51
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
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
15 sept. 2009 à 15:56
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
0
cs_Mia
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

15 sept. 2009 à 16:09
Ok pour le manifest en vb 2008 mais il n'y en a pas en vb6 selon moi
???

Mia
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
15 sept. 2009 à 16:15
"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
0
cs_Mia
Messages postés
36
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
15 septembre 2009

15 sept. 2009 à 16:21
Je veux bien moi, mais mon application vb6 ne génére pas de manifest mais uniquement un .exe

Mia
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
15 sept. 2009 à 16:24
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
0