frobinet
Messages postés64Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 décembre 2006
-
28 févr. 2005 à 18:01
frobinet
Messages postés64Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 décembre 2006
-
2 mars 2005 à 11:23
Bonjour,
Pour créer un PlugIn, il faut que je transforme une dll en appel de convention stdcall vers un appel de convention en C.
j'ai remplacer <.model flat, stdcall> par <.model large, c>
et rajouter le paramètre /Gc sur le compilateur ml.exe. mais j'ai un
message d'erreur "entrypoint _LibMain is not a stdcall whith 12 bytes
of arguments. de plus il ne reconnait plus lstcrpy....
frobinet
Messages postés64Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 décembre 2006 1 mars 2005 à 16:24
Bonjour,
Je viens de trouver la solution, il est possible de compiler une dll en
mixant les deux conventions d'appels, exemple pour un un PlugIn pour
ProgDBV j'ai créer une dll avec la définition : .model flat, stdcall et
à chaque déclaration de fonction j'ai rajouter entre proc et le premier
paramètre 'C' mais si j'avais voulu faire l'inverse il aurait
fallut rajouter 'STDCALL'
Exemple : On_Send_Dll_ID_Name proc C lpNameDll:DWORD.
Par contre il faut impérativement laisser LibMain en STDCALL ! Du moins
dans le cas de ProgDVB mais je crois que c'est pareil pour Winamp.
J'ai remis les mêmes options de compilation que d'habitude et n'est pas eu besoin de retoucher au fichier de définition.
Les fonction de l'API étant au format STDCALL, il n'y a pas beaucoup d'autres choix à moins de ne pas utiliser l'API.
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 1 mars 2005 à 12:10
salut,
tu est sur qu'il y a quelquechose a modifier ?
les appels Masm sont comme en C a partir du moment ou il y a un param ou une variable locale.
sinon, je pense que tu dois exporter tes symboles de maniere différente aussi:
PUBLIC _[mailto:_LibMain@12 LibMain@12]
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 1 mars 2005 à 17:45
LibMain comme tout callback appelé par Windows est toujours en stdcall, Windows ne dépile jamais les params c'est toujours à l'appelé de le faire, tout comme pour l'API Windows.