Problème DLL avec Visual Studio

Résolu
Suisse00 Messages postés 83 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 12 octobre 2005 - 6 nov. 2004 à 22:26
Suisse00 Messages postés 83 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 12 octobre 2005 - 7 nov. 2004 à 15:46
Salut, voila j'ai passer sous Visual Studio, j'ai créer un projet DLL (Dans les paramètre de Projet W32) mais quand je le teste sur mon application cela fait que planter.

J'ai essayer créer un projet pour mIRC et j'ai toujours l'erreur * /dll: no such routine 'MessageBox'.
A priori j'aurais dit que le problème ses moi, mais j'ai télécharger une source (http://www.cppfrance.com/article.aspx?ID=2495), si je compile a partir de ce projet pas de problème. Si je créer un projet DLL par moi même pour simplement importer le fichier .CPP & .def j'en revien au même problème.

Merci d'avance, en espérant pas trop vous avoir perdu :)

Suisse
------------------------------------------
Votre dévoué posseur de question :D

10 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 nov. 2004 à 22:37
probleme de fonction non exportee ? verifie avec depends.exe que ta dll exporte bien la fonction.

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 nov. 2004 à 23:23
Tu as quelle version de VS ?
Si VS 2003 (le 6 me souviens plus):
Refais new proj Win32 'nomProj'.
Proprietes: DLL et VIDE !!!
A ce point, tu crees un CPP 'nomProj' et de suite un DEF 'nomProj'.
Mets de suite en RELEASE.
Explor de solutions, tu cliques droit sur projet et proprietes.
Regle toutes optimisations et onglet 'Avance' tu mets 'convention d'appels' en __stdcall et 'compilation sous' en compile comme code C. Ceci evitera de taper des trucs dans le code.
Remplis dans le DEF le nom de func a exporter.

Devrait aller.

ciao...
BruNews, MVP VC++
3
Suisse00 Messages postés 83 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 12 octobre 2005
7 nov. 2004 à 15:46
Merci ^^""

Vais l'`écrire ici si quelqu'un cherche :p

Passer votre fichier .def dans le linker (Projet/Propiéter de <nom du projet>/Éditeur de lien/Entrée/Fichier de définition de module/ entré le <nom du fichier>.def

@+

Merci d'avoir résolue mon problème (j'suis sûre d'être élus boulet du jour :))
------------------------------------------
Votre dévoué posseur de question :D
3
Suisse00 Messages postés 83 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 12 octobre 2005
6 nov. 2004 à 23:11
Merci pour ta réponse vite, je crois qu'il n'y pas les fonction d'exporter (ses ma 1er utilisation)

A moin que je me trompe d'après mes observation les fonction aurais du (si'il y en avais) être la 2e fenêtre (celle du bas) qui sont coller sur la liste déroulant des DLL.

Merci d'avance et désoler pour le dérangement.

Suisse
------------------------------------------
Votre dévoué posseur de question :D
0

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

Posez votre question
Suisse00 Messages postés 83 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 12 octobre 2005
7 nov. 2004 à 00:48
Je suis bien sur VS.net 2003
Non aucun changement :(
(Sinon j'avais bien créer un projet DLL vide, avec les même noms de fichier)

Sinon

nomProj.cpp
(Si je met le DLLMain il s'exécute 2 fois)
#include <windows.h>

int FunMsgBox( HWND mWnd, HWND aWnd, char *data, char *parms, BOOL print, BOOL nopause )
{
MessageBox(0,"Sa va bien finir par marcher...","Souriez !",0);
return 1;
}


nomProj.def
LIBRARY nomProj
EXPORTS
FunMsgBox @1


@+

Suisse
------------------------------------------
Votre dévoué posseur de question :D
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2004 à 01:00
DllMain peut s'executer 4 fois en theorie, faut mettre un
switch(dwreason) et initialiser ou il convient. Tu peux meme eviter les autres appels en inserant DisableThreadLibraryCalls().

Tu es bien regle en __stdcall ?

ciao...
BruNews, MVP VC++
0
Suisse00 Messages postés 83 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 12 octobre 2005
7 nov. 2004 à 01:02
Je suis bien a __stdcall
------------------------------------------
Votre dévoué posseur de question :D
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2004 à 01:05
et compilation C ? alors doit s'exporter.

Mets un clic droit sur ta dll et 'view dependencies', tu dois voir le nom de ta func dans la partie droite en haut sinon c'est que pas bon.

ciao...
BruNews, MVP VC++
0
Suisse00 Messages postés 83 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 12 octobre 2005
7 nov. 2004 à 01:12
Désoler de cette question ridicule mais je clic bouton droit ou ? (surement dans depency)

Sinon toujours rien.
------------------------------------------
Votre dévoué posseur de question :D
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
7 nov. 2004 à 01:16
Dans l'explorateur Windows, clic droit sur la dll.
Si tu as lance une fois depends.exe et configure 'DLL' dans le handler alors tu auras menu 'view dependencies'.

Prepare un zip de ton proj (enleve avant les fichiers de compil inutiles), je te passe par MP ou me l'envoyer, je te retournerai cela demain. M'en occuperai en me levant.
Bonne nuit.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous