Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1688 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  surcharge de fonctions dans une dll classique, help plz

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

surcharge de fonctions dans une dll classique, help plz

n°701061
giova
Posté le 16-04-2004 à 14:08:52  profilanswer
 

Salut a tous.
 
Je debute en C++ je connais que les rudiments du language classique.
hier je me suis lancé sur la creation de dll, j'ai reussit a faire et tester une dll avec plusieurs fonctions sans pb, mais quand j'ai voulu surcharger l'une d'entre elles qui est exporté la j'ai eu une erreure de compile et je n'arrive pas a résoudre le pb.
 
En bref (biensur je simplifie le code au maximum):  
 
dans le header j'exporte les prototypes (je ne sais pas si mes termes sont vraiment exactes)

Code :
  1. string  _stdcall WCHAR2string(WCHAR* textin, string textout);
  2. string  _stdcall WCHAR2string(const WCHAR* textin, string textout);


 
dans le .cpp je defini mes fonctions :

Code :
  1. string _stdcall WCHAR2string(WCHAR* textin, string textout)
  2. {
  3. //blablabla
  4. }
  5. string _stdcall WCHAR2string(const WCHAR* textin, string textout)
  6. {
  7. //blablabla
  8. }


 
et enfin dans mon .dev :

Code :
  1. LIBRARY wcharconvertor
  2. EXPORTS
  3. WCHAR2string


 
et quand je compile tout ca l'erreure est :  
 
LINK : fatal error LNK1152: impossible de résoudre un ou plusieurs symboles non décorés
LINK : fatal error LNK1141: échec lors de la génération du fichier des exportations
 
si je met la definition de l'une des fonctions en commentaire alors l'erreure disparait, je soupsonne tres fortemement mon .dev comme etant la source du pb, en effet comment peux il savoir quel WCHAR2string exporter?
 
si quelqu'un a la moindre info pour me faire avancer...
merci d'avance.

mood
Publicité
Posté le 16-04-2004 à 14:08:52  profilanswer
 

n°701175
cricri_
Posté le 16-04-2004 à 15:42:15  profilanswer
 

Pour moi tu ne peux clairement pas surcharger une fonction exportée ...
Donne lui un autre nom ou bien  fait autrement

n°701203
SoWhatIn22
Posté le 16-04-2004 à 16:08:56  profilanswer
 

comme il est dit dans l'erreur, "impossible de résoudre un ou plusieurs symboles non décorés"
autrement dit, quand tu fais du c++, les noms de méthodes et fonctions sont "décorés" pour permettre la surcharge et le polymorphisme. Il faut donc exporter le nom décoré.
Ce n'est pas ce qui est fait dans du code purement C, ou la surcharge n'existe pas, et où la docération de nom n'existe donc pas non plus.
 
la façon la plus simple pour savoir quel est ce nom est de faire un autre projets simple qui utilise le header en question, et d'utiliser les méthodes. Ton linker va hurler en disant qu'il ne peut pas résoudre une certains nombres de symboles. C'est ceux-là que tu dois exporter.


Message édité par SoWhatIn22 le 16-04-2004 à 16:10:08
n°701306
giova
Posté le 16-04-2004 à 17:36:26  profilanswer
 

ok je crois comprendre ce que tu veux dire tu parle des noms dynamiques données aux fonctions?
 
du style pour la fonction ecrire :  
Ecrire@@YGHXZ
 
et dans mon .dev j'ecris : ecrire = Ecrire@@YGHXZ
 
bon ou a l'ouest?

n°701327
SoWhatIn22
Posté le 16-04-2004 à 18:02:22  profilanswer
 

pas sûr de bien te comprendre. Le nom donné aux fonctions n'est pas dynamique, il est établi par le compilateur en fonction de la signature de la fonction (nom de la classe, nombre et type des argumetns, etc...).
En effet, ça ressemble à des trucs du genre ?what@MACLASSE@@QAEXAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z !!!

n°701329
giova
Posté le 16-04-2004 à 18:05:55  profilanswer
 

oui dynamique en fonction de la signature, on est bien d'accord, bon je vais essayer ca merci.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  surcharge de fonctions dans une dll classique, help plz

 

Sujets relatifs
[VBA] PB avec fonctions AcessRemplissage de polygônes - help!!
help me !!!help des noms de serveurs gratuit please
[help] est ce qu il existe des templates simples de sites en php?[JavaScript] Besoin d'aide par rapport aux fonctions ...
Help (je n'arrive pas à selectionner une ligne dans ma table)help ! seekg et ifstream , ça marche pas !
Help pour compiler un programme *non limité dans le temps*HELP ! création d'une mailing list à partir d'un site web ...?
Plus de sujets relatifs à : surcharge de fonctions dans une dll classique, help plz


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR