[MASM32] DLL export en C [Résolu]

Signaler
Messages postés
64
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
15 décembre 2006
-
Messages postés
64
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
15 décembre 2006
-
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....



Merci pour tout renseignement,



frobinet.

4 réponses

Messages postés
64
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
15 décembre 2006

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.



@+
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
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]

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

ciao...
BruNews, MVP VC++
Messages postés
64
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
15 décembre 2006

Merci pour la précision,



@+