Execution d'une DLL

Résolu
Soulstormer Messages postés 32 Date d'inscription lundi 12 mai 2008 Statut Membre Dernière intervention 29 mai 2008 - 26 mai 2008 à 12:01
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 - 29 mai 2008 à 16:54
Bonjour, je cherche une solution à ce pb:

Je code avec VB8, et je voudrais faire comme avec VB6: lancer un projet DLL afin de travailler dessus via un autre projet, (ou alors une autre méthode comme faire une solution avec 2 projets: un .exe et la dll)

Merci de votre aide

28 réponses

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
28 mai 2008 à 17:24
Mouarf, je dois effectivement dire que je n'ai rien compris à la strucutre de ta solution

J'ai donc créé une nouvelle solution et j'ai importé tes fichiers (Tracks.vb et Test.vb). Tu n'a pas tes projets dans une seule solution toi?

Voici le résultat (qui fonctionne très bien) :
http://homepage.swissonline.ch/KyrO/Divers/coreNet.rar

C'est peut être parce que tu fais référence à un projet qui se trouve dans une autre solution. Dans ce cas je pense qu'il faut définir le chemin de sortie de la génération de ton projet DLL sur le même dossier que pour ton projet test.
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
29 mai 2008 à 08:10
Bonjour

Clair, j'ai galéré pendant 15min pour tenter de faire fonctionner ta solution, cela ne m'a par conséquent pas surpris que ça ne fonctionne pas

Je te conseil clairement si possible de mettre tes projets dans une seule solution, ou à défaut, comme Kevin, je pense que tu doit générer ton projet dans le bon dossier pour que ça marche, mais dans ce cas, il faudra que tu compile tes projets avant le debug.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 mai 2008 à 12:25
le plus simple est de faire un groupe de projet.
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
26 mai 2008 à 13:36
Bonjour

Avec quoi tu code ?
"Je code avec VB8, et je voudrais faire comme avec VB6"

Catégorie VB6 ?????????

Si c'est .NET, tu créé une solution, et ensuite tu ajoute tes projets.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0

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

Posez votre question
Soulstormer Messages postés 32 Date d'inscription lundi 12 mai 2008 Statut Membre Dernière intervention 29 mai 2008
26 mai 2008 à 17:25
Dsl pour le post, je code bien en vb8







Renfield je vois pas de quoi tu parler quand tu dis "groupe de projet"?
C'est bien une solution non?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 mai 2008 à 17:31
yep, probleme de terminologie ^^ (pas l'habitude de voir VB8, mes yeux ont lu VB6)
s'eusse été VB2005 j'aurais pas eu ce soucis.
0
Soulstormer Messages postés 32 Date d'inscription lundi 12 mai 2008 Statut Membre Dernière intervention 29 mai 2008
26 mai 2008 à 17:52
Ben c'est bien le problème sous VB6 on peut lancer une DLL, même s'il ne se passe rien. Alors que sous VB8 on ne peut pas: il met un message d'erreur comme quoi un .exe doit lui faire référence pour qu'elle soit lancée...
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
26 mai 2008 à 20:07
Salut,

Que je sache, on ne peut pas lancer une DLL (essaie de double-cliquer sur une DLL dans l'explorateur)
On peut y créer des classes qui pourront être utile à un ou des autres programmes, mais il n'y a pas de point d'entrée pour l'exécution (Sub Main).

Ou alors, c'est ce qu'on appel parfois un exécutable "caché", c'est à dire un EXE renommé en DLL...
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
27 mai 2008 à 09:04
Bonjour

Sans certitude, tu ne parlerais pas d'un fonctionnalité permettant (en VB6) d'attendre qu'une app instancie une DLL ActiveX et de pouvoir débuguer à ce moment ?

Si c'est ça, je n'ai jamais fait.

Note, VB8 c'est pas VB2005 ?
VB6
VB7 (2002/2003) ?
VB8 (2005) ?
VB9 (2008) ?
je n'en suis pas sûr, mais c'est ce que je pense.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Soulstormer Messages postés 32 Date d'inscription lundi 12 mai 2008 Statut Membre Dernière intervention 29 mai 2008
27 mai 2008 à 09:05
Dsl de te contredire Kevin.Ory, mais avec vb6 on peut lancer une bibliothèque de classes (qui donne une dll), et on pouvait travailler dessus. (on a donc une dll qui est "éxécutée")
Mais on ne peut pas avec vb8...
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2008 à 09:12
elle n'est pas executée...

on a le choix : soit elle entre dans l'attente d'etre instanciée
soit ca alnce l'exe de notre choix, lequel instanciera probablement cette dll
soit IE est utilisé pour instancié la dll

le plus simple etant surement dans ton cas (comme en VB6)
de rassembler le tout dans un groupe de projet (ou solution sous VB2005) et de definir un projet Exe de test comme projet de démarrage
0
Soulstormer Messages postés 32 Date d'inscription lundi 12 mai 2008 Statut Membre Dernière intervention 29 mai 2008
27 mai 2008 à 11:01
Pour répondre à NHenry, c'est bien VB8 avec lequel je travail, et ce que je voudrais faire, je n'ai réussis à le faire tourner qu'avec VB6.

En fait Renfield, ta proposition c'est ce que j'ai fait: mais j'ai un message d'erreur qui me dit que la solution n'a pas pu ouvrir le fichier(dll)...

Il faudrait que je puisse générer la dll et lancer l'exe après, ce que je ne peux pas faire.
Afin de modifier plus facilement ma dll et de la tester au fur et à mesure, pas de la générer dans un projet séparé et de refaire la référence à chaque fois.

J'éspère que vous voyez ce que je veux dire, et que je suis assez clair, sinon dites-le moi!
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2008 à 11:03
tu peux parametrer l'ordre de génération des projets, dans les propriétés de ta solution, là ou tu dit que c'est on exe qui doit etre lancé, et non le projet dll
0
Soulstormer Messages postés 32 Date d'inscription lundi 12 mai 2008 Statut Membre Dernière intervention 29 mai 2008
27 mai 2008 à 11:09
Oui, je connais cette option, mais la dll doit être éxecutée avec ou sans débogage?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2008 à 11:12
avec, je dirai, si tu dois pouvoir aller jouer dedans (fil d'execution, points d'arret)
0
Soulstormer Messages postés 32 Date d'inscription lundi 12 mai 2008 Statut Membre Dernière intervention 29 mai 2008
27 mai 2008 à 11:17
Aïe! Aucune des 3 possibilités ne fonctionnent! A chaque fois il retourne un message d'erreur comme quoi il ne peut pas charger mon espace de nommage qui est dans la dll
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
27 mai 2008 à 11:41
Bonjour

Est-ce la suite de ce sujet :
http://www.vbfrance.com/infomsg_SOLUTION-ESPACE-NOMMAGE_1136548.aspx?p=3
?

Car si c'est ça, tu as normalement ajouter la DLL en tant que référence et donc l'ordre de génération des projets est configuré automatiquement.

As-tu essayer uniquement de générer la solution et les projets (individuellement) sans les executer ?

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Soulstormer Messages postés 32 Date d'inscription lundi 12 mai 2008 Statut Membre Dernière intervention 29 mai 2008
27 mai 2008 à 11:51
Oui c'est bien la suite car l'espace de nommage est correct et que ce nouveau pb concerne un nouveau sujet, dsl de ne pas l'avoir précisé.

Ce que tu propose tourne bien en effet, mais il faut recompiler et refaire la référence au fichier et je veux éviter cette manip à chaque fois...
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
27 mai 2008 à 14:53
Je développe régulièrement des projets contenant des DLL avec VB2005 ou VB2008:

1. Créer la solution avec 2 projets, une application et une bibliothèque de classe (Fichier > Ajouter)
2. Références de l'application > Ajouter > Projet > le projet DLL de la solution
3. Bouton droit sur l'application de la solution > Dépendance du projet > cocher la DLL de la solution
"Ce que tu propose tourne bien en
effet, mais il faut recompiler et refaire la référence au fichier et je
veux éviter cette manip à chaque fois..."

Effectivement, "démarrer le débogage" (ou le petit bouton play) ne recompile pas la DLL, il faut donc faire "Générer la solution" (Ctrl+Maj+B) à chaque fois après modification de la DLL avec de démarrer le débogage. Mais refaire la référence à chaque fois, je ne vois pas de quoi tu parle.

Dans le cas ou les DLL sont chargé dynamiquement dans l'application (comme des plugins), on défini le chemin de sortie de la génération dans les propriété du projet DLL pour placer la DLL dans le dossier voulu.

Je maintient qu'il n'y a pas de sub Main dans une DLL, donc pas de point d'entrée pour l'éxécution. Une application ne peut pas non plus executer une DLL, elle ne peut que créer une instance d'une classe contenu dans la DLL. Par contre il y a un EntryPoint qui est executé à chaque fois qu'une application référencie la DLL, j'avais vu ça lorsque j'ai appris à faire un hook des API winsock, mais je ne sais pas si c'est le cas pour une DLL .NET (on y voit tout de même une propriété EntryPoint lorsque on parcours les modules).
0
Soulstormer Messages postés 32 Date d'inscription lundi 12 mai 2008 Statut Membre Dernière intervention 29 mai 2008
27 mai 2008 à 16:21
Merci, je peux en effet compiler correctement ma solution, mais lors du test (je clique juste sur un btn ce qui a pour conséquence d'instancier la dll) j'ai l'erreur suivante:

Impossible de charger le type 'coreNet.Tracks.Tracks' à partir de l'assembly 'Test Objets, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
0
Rejoignez-nous