Soulstormer
Messages postés32Date d'inscriptionlundi 12 mai 2008StatutMembreDernière intervention29 mai 2008
-
26 mai 2008 à 12:01
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDerniè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)
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.
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 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
Soulstormer
Messages postés32Date d'inscriptionlundi 12 mai 2008StatutMembreDernière intervention29 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...
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 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...
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 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
Soulstormer
Messages postés32Date d'inscriptionlundi 12 mai 2008StatutMembreDernière intervention29 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...
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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
Soulstormer
Messages postés32Date d'inscriptionlundi 12 mai 2008StatutMembreDernière intervention29 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!
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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
Soulstormer
Messages postés32Date d'inscriptionlundi 12 mai 2008StatutMembreDernière intervention29 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
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 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).
Soulstormer
Messages postés32Date d'inscriptionlundi 12 mai 2008StatutMembreDernière intervention29 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'.