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...
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 20142 11 août 2007 à 23:57
Petit exemple:
HANDLE hInFile = CreateFile(InFile, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
error C2275: 'HANDLE' : utilisation non conforme de ce type comme expression
DWORD pBuff = 0;
error C2275: 'DWORD' : utilisation non conforme de ce type comme expression
Sans parler des warning a tout va
Pouquoi c'est impossible d'initialiser la variable directement a la declaration?
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 20142 12 août 2007 à 00:27
Bon si vraiment je ne trouve aucune solution a mon pb, pour une fois j'utiliserait VC mais bon sa va m'obliger a revoir tt mon code, a mettre tt les declarations de variables tt en haut des fonctions, etc...
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 12 août 2007 à 11:50
[auteurdetail.aspx?ID=809093 NairodDorian]> C99 permet de déclarer des variables au milieu d'un bloc d'instructions comme en C++, mais le typage des fonctions existait déja avant C99
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 20142 12 août 2007 à 13:19
Merci pour le lien mais ca ne marche tjrs pas :(
Je compile a travers devcpp ds linker je lui met ca:
--nostdlib
--allow-multiple-definition
-lntdll
-lkernel32
--no-export-all-symbol
Mais --allow-multiple-definition n'as pas l'air de fonctionner car il me met tjrs :
multiple definition of `DllMainCRTStartup@12'
first defined here
ld returned 1 exit status
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 20142 12 août 2007 à 14:20
Je vient de tester et effectivement ca marche, je pensse que c'est du au fait que devcpp link avec ld et non pas avec g++
g++ c'est pas le compilateur cpp?
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 15 août 2007 à 00:19
Dans menu Projet/Options du Projet/Compilateur/Edition de liens
"ne pas utiliser les libs standards" mettre yes (c'est -nostdlib)
"retirer symboles de l' exéctuable" mettre yes (c'est -s ou --no-export-all-symbols)
Dans paramètres/éditeur de lien ajouter les libs à linker:
-luser32
-lkernel32
-lcomctl32
(-mwindows et --add-stdcall-alias sont facultatifs)
Ya plus qu'à cliquer sur le bouton compiler.
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 20142 15 août 2007 à 11:59
comctl32 et user32 ds une dll?
Les deux seul lib dont ma dll a besoin c'est ntdll et kernel32 et avec devcpp ca m'ajoute msvcrt seul solution compiler et linker avec gcc ou utiliser msvc