surcharge de fonctions dans une dll classique, help plz - C++ - Programmation
Marsh Posté le 16-04-2004 à 15:42:15
Pour moi tu ne peux clairement pas surcharger une fonction exportée ...
Donne lui un autre nom ou bien fait autrement
Marsh Posté le 16-04-2004 à 16:08:56
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.
Marsh Posté le 16-04-2004 à 17:36:26
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?
Marsh Posté le 16-04-2004 à 18:02:22
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 !!!
Marsh Posté le 16-04-2004 à 18:05:55
oui dynamique en fonction de la signature, on est bien d'accord, bon je vais essayer ca merci.
Marsh Posté le 16-04-2004 à 14:08:52
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)
dans le .cpp je defini mes fonctions :
et enfin dans mon .dev :
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.