Traduction de la source d'une dll de Delphi à cpp
Bonjour, venant du delphi, je lutte pour traduire une librairie écrite en delphi vers le cpp.
Le problème est que les exports ont un nom bizzare, quand je vérifie avec IDA
par exemple au lieu de 'CreateLib' , tel qu' exporté en delphi, je trouve 'CreateLib@0' pour la version exportée en cpp.
dans mon header en c, je déclare:
Code:
extern "C" __declspec(dllexport) int __stdcall CreateLib();
(pour int __stdcall CreateLib().)
en équivalence à
Code:
function CreateLib: Integer; stdcall;
en delphi.
quelle est donc la syntaxe obscure a utiliser pour que les noms des exports soient comme ceux générés par le compilo delphi ?
Par ailleur est ce que
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
return true ;
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
{
return true;
break;
}
case DLL_PROCESS_DETACH:
{
return false;
break;
}
}
} |
est efficient pour garder un handle de dll valide ( éviter le déchargement) ? L'équivalent en delphi marche mais l'appel à cette fonction en delphi est totalement différent ( procedure avec 1 seul param correspondant à fdwReason, le rest géré en automatique par le compilo).