Execution d'une DLL [Résolu]

Soulstormer 32 Messages postés lundi 12 mai 2008Date d'inscription 29 mai 2008 Dernière intervention - 26 mai 2008 à 12:01 - Dernière réponse : Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention
- 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
Afficher la suite 

Votre réponse

28 réponses

Meilleure réponse
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 28 mai 2008 à 17:24
3
Merci
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.

Merci Kevin.Ory 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de Kevin.Ory
Meilleure réponse
NHenry 14271 Messages postés vendredi 14 mars 2003Date d'inscription 14 octobre 2018 Dernière intervention - 29 mai 2008 à 08:10
3
Merci
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

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de NHenry
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 26 mai 2008 à 12:25
0
Merci
le plus simple est de faire un groupe de projet.
Commenter la réponse de Renfield
NHenry 14271 Messages postés vendredi 14 mars 2003Date d'inscription 14 octobre 2018 Dernière intervention - 26 mai 2008 à 13:36
0
Merci
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
Commenter la réponse de NHenry
Soulstormer 32 Messages postés lundi 12 mai 2008Date d'inscription 29 mai 2008 Dernière intervention - 26 mai 2008 à 17:25
0
Merci
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?
Commenter la réponse de Soulstormer
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 26 mai 2008 à 17:31
0
Merci
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.
Commenter la réponse de Renfield
Soulstormer 32 Messages postés lundi 12 mai 2008Date d'inscription 29 mai 2008 Dernière intervention - 26 mai 2008 à 17:52
0
Merci
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...
Commenter la réponse de Soulstormer
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 26 mai 2008 à 20:07
0
Merci
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...
Commenter la réponse de Kevin.Ory
NHenry 14271 Messages postés vendredi 14 mars 2003Date d'inscription 14 octobre 2018 Dernière intervention - 27 mai 2008 à 09:04
0
Merci
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
Commenter la réponse de NHenry
Soulstormer 32 Messages postés lundi 12 mai 2008Date d'inscription 29 mai 2008 Dernière intervention - 27 mai 2008 à 09:05
0
Merci
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...
Commenter la réponse de Soulstormer
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 27 mai 2008 à 09:12
0
Merci
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
Commenter la réponse de Renfield
Soulstormer 32 Messages postés lundi 12 mai 2008Date d'inscription 29 mai 2008 Dernière intervention - 27 mai 2008 à 11:01
0
Merci
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!
Commenter la réponse de Soulstormer
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 27 mai 2008 à 11:03
0
Merci
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
Commenter la réponse de Renfield
Soulstormer 32 Messages postés lundi 12 mai 2008Date d'inscription 29 mai 2008 Dernière intervention - 27 mai 2008 à 11:09
0
Merci
Oui, je connais cette option, mais la dll doit être éxecutée avec ou sans débogage?
Commenter la réponse de Soulstormer
Renfield 17308 Messages postés mercredi 2 janvier 2002Date d'inscription 22 août 2018 Dernière intervention - 27 mai 2008 à 11:12
0
Merci
avec, je dirai, si tu dois pouvoir aller jouer dedans (fil d'execution, points d'arret)
Commenter la réponse de Renfield
Soulstormer 32 Messages postés lundi 12 mai 2008Date d'inscription 29 mai 2008 Dernière intervention - 27 mai 2008 à 11:17
0
Merci
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
Commenter la réponse de Soulstormer
NHenry 14271 Messages postés vendredi 14 mars 2003Date d'inscription 14 octobre 2018 Dernière intervention - 27 mai 2008 à 11:41
0
Merci
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
Commenter la réponse de NHenry
Soulstormer 32 Messages postés lundi 12 mai 2008Date d'inscription 29 mai 2008 Dernière intervention - 27 mai 2008 à 11:51
0
Merci
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...
Commenter la réponse de Soulstormer
Kevin.Ory 843 Messages postés mercredi 22 octobre 2003Date d'inscription 7 janvier 2009 Dernière intervention - 27 mai 2008 à 14:53
0
Merci
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).
Commenter la réponse de Kevin.Ory
Soulstormer 32 Messages postés lundi 12 mai 2008Date d'inscription 29 mai 2008 Dernière intervention - 27 mai 2008 à 16:21
0
Merci
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'.
Commenter la réponse de Soulstormer

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.