Fonction absente d'une dll après compilation réussie

Fonction absente d'une dll après compilation réussie - C++ - Programmation

Marsh Posté le 12-05-2007 à 12:52:34    

Bonjour,
 
je ne sais pas trop comment expliquer mon soucis, donc je vais commencer par décrire ce que j'ai fait:
- un nouveau projet (empty project) sous visual studio 2005
- ajout d'un fichier cpp au projet nommé hpd_ext contenant une fonction myfunction (cette fonction renvoie tjs 1)
- propriétés du projet je veux faire une .dll
- je compile hpd_ext.dll apparait.
 
Maintenant le problème: lorsque j'ouvre cette dll pour voir si ma fonction s'y trouve, force est de constater qu'elle n'existe pas, et je n'ai aucune idée de pourquoi.
 
Merci d'avance pour votre aide,
Jérôme.


Message édité par gunti le 12-05-2007 à 13:02:16
Reply

Marsh Posté le 12-05-2007 à 12:52:34   

Reply

Marsh Posté le 12-05-2007 à 14:30:32    

Est-ce que tu l'exportes au moins (avec __declspec(dllexport))? Si oui, tu vérifies avec quoi?

Reply

Marsh Posté le 17-05-2007 à 20:06:25    

Oui je l'exporte.
 
Pour vérifier j'utilise deux moyens. Avec Notepad++ je check si le nom est présent. Sinon j'utilise une appli standard dans ma boite à laquelle je spécifie le nom de la dll et me signifie si elle trouve ou non le point d'entrée. Et là elle le trouve pas...
 
Désolé de pas avoir répondu plus vite j'étais en voyage d'affaires et n'avais pas le net.
 
A +,
Gunthi

Reply

Marsh Posté le 17-05-2007 à 20:15:00    

Pas de souci. Le point d'entrée manquant signifie que tu n'as pas (ou alors est malformé) de DllMain. Tu peux te référer à cet exemple sur la MSDN (et accessoirement, tu as quelques autres pages intéressantes adjacentes ;)

Reply

Marsh Posté le 17-05-2007 à 23:05:22    

Ce ne serait pas un problème de décoration de nom, as-tu essayé avec extern "C" avant le __declspec ?

Reply

Marsh Posté le 18-05-2007 à 09:17:39    

Oui j'ai essayé avec extern "C" et ca change rien.
Pour ce qui est de DllMain je ne pense pas que cela soit le problème car en lisant la MSDN j'ai vu que si les points d'entrée étaient manquants alors la Dll ne se chargeait même pas. Dans mon cas la dll se charge.

Reply

Marsh Posté le 18-05-2007 à 14:04:01    

gunti a écrit :

Sinon j'utilise une appli standard dans ma boite à laquelle je spécifie le nom de la dll et me signifie si elle trouve ou non le point d'entrée. Et là elle le trouve pas...


On est d'accord sur ce point n'est-ce pas? Tu n'as pas de DllMain? Alors arrête de penser que ce n'est pas la solution, et code ce PE :P

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed