Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 2014
-
11 août 2007 à 15:30
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 2014
-
15 août 2007 à 11:59
Bonjour,
Est-ce que quelqu'un saurait comment virer les depences au crt ds une dll?
Je ne les utilises pas, mais j'ai quand mm des apelles a malloc, free, fprintf, fflush, abort, _iob, _errno, __dllonexit
Surement a cause du point d'entré que le linker redefini a DllMainCRTStartup, j'ai essayer ca:
--entry=DllMain
--nostdlibs
-lkernel32
-lntdll
mais a la compilation je me retrouve avec cette erreur:[Warning] cannot find entry symbol DllMain; defaulting to 65581000
J'ai aussi essayer de refaire la fonction DllMainCRTStartup:
int APIENTRY DllMainCRTStartup(void)
{
return 1;
}
mais elle semble etre ignoré
Si quelqu'un a une solution...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 11 août 2007 à 22:43
Je n'utilise pas mingw mais il y a un trux que je trouve bizarre dans ton affaire.
La DllMain() prend 3 params que le SYSTEME aura mis sur la pile et non le CRT, il faut dans tous les cas les dépiler.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 11 août 2007 à 22:50
__stdcall toujours.
Si ta fonction est codée en C, il suffit de mettre les 3 params à ta fonction, le compilo assure le dépilage en sortie de fonction.
En ASM, sortir par: ret 12
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 20142 11 août 2007 à 23:14
Quand je compile le linker "creer" une nouvelle fonction DllMainCRTStartup qui apelle elle meme DllMain en se servant de fonction issue des crt.
J'ai donc essayer de mettre cette fonction ds mon code pour qu'il utilise ma fonction a la place de la creer lui meme, mon pb c'est qu'il ne la prend pa en compte
int APIENTRY DllMainCRTStartup(HINSTANCE hInst, DWORD reason, LPVOID reserved)
{
int Ret = DllMain(hInst, reason, reserved);
return Ret;
}
C mieux?
Maintenant j'ai le droit a: multiple definition of `DllMainCRTStartup@12'
Il y a t-il un moyen de redefinir ma fonction a la place de celle utiliser produit par le linker?