[MASM32] DLL export en C

Résolu
frobinet Messages postés 64 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 décembre 2006 - 28 févr. 2005 à 18:01
frobinet Messages postés 64 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 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....



Merci pour tout renseignement,



frobinet.

4 réponses

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



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

@++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 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.

ciao...
BruNews, MVP VC++
0
frobinet Messages postés 64 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 décembre 2006
2 mars 2005 à 11:23
Merci pour la précision,



@+
0
Rejoignez-nous