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 : Sélectionner tout - Visualiser dans une fenêtre à part
extern "C" __declspec(dllexport) int __stdcall  CreateLib();
(pour int __stdcall CreateLib().)

en équivalence à

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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).