Problème DLL avec Visual Studio [Résolu]

Signaler
Messages postés
83
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2005
-
Messages postés
83
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2005
-
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

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
probleme de fonction non exportee ? verifie avec depends.exe que ta dll exporte bien la fonction.

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++
Messages postés
83
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2005

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
Messages postés
83
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2005

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
Messages postés
83
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2005

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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++
Messages postés
83
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2005

Je suis bien a __stdcall
------------------------------------------
Votre dévoué posseur de question :D
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++
Messages postés
83
Date d'inscription
vendredi 13 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2005

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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++