begin process at 2012 05 30 22:49:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

System

 > 

Virer la CRT


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Virer la CRT

vendredi 22 juin 2007 à 14:51:46 | Virer la CRT

HeavenForsaker

Bonjour,

J'essaye de virer la C Run Time de mon prog en suivant la procédure suivante :
(sous Visual C++)

- Sous Linker/Input, "Ignore All Default Libraries" => Yes
- C/C++/Code Generation, "Buffer Security Check" => No
- Linker/Advanced, "Entry Point" => MyWinMain

Avec ça j'ai 2 erreurs de linkage sur memset et chkst qui sont 2 fonctions que je n'utilise pas dans mon prog.
En fait dans mon MyWinMain j'appel juste une boite de dialogue et j'ai l'impression que c'est l'appel à la fonction DialogBox qui cause l'erreur car quand je vire cet appel je n'ai plus d'erreur.
J'ai vu dans le code de BruNews qu'il utilisait uniquement de l'ASM dans son Main pour faire l'appel à la fonction DialogBoxParam, moi je n'ai utilisé que du c++, si l'erreur viens de la, faut il obligatoirement utiliser de l'ASM dans le Main pour virer la CRT ?



vendredi 22 juin 2007 à 16:54:19 | Re : Virer la CRT

SAKingdom

Membre Club
Réponse acceptée !
"Ignore All Default Libraries" remet le à No
Va dans C/C++->Génération de code->"Bibliothèque Runtime" et change pour Multithread
Change aussi "Vérification de la sécurité de la mémoire tampon" pour non

C++ (@++)

vendredi 22 juin 2007 à 17:35:08 | Re : Virer la CRT

HeavenForsaker

Merci beaucoup SAKingdomça compile, en fait c'était le "Ignore All Default Libraries" à mettre à NO sinon le reste c'était bon.
Par contre j'ai 2 Warnings :

1>LIBCMT.lib(mathfcns.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators
1>LIBCMT.lib(cpu_disp.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators

Ta pas une idée de ce que ça veux dire?
vendredi 22 juin 2007 à 17:58:45 | Re : Virer la CRT

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
ASM pas obligatoire, c'est juste pour éviter la stackframe d'entrée qui ne sert à rien.
Pour virer CRT, suffit de cela:

#pragma comment(linker, "/entry:myWinMain")
void __stdcall myWinMain()
{
  // TON CODE ICI
 
  ExitProcess(0); // SORTIR ICI
}

warnings "CRT section exists" dit que des 'memset' ou autres trucs de ce genre ont été insérés.
Souvent dus à ce genre de code:
UNESTRUCT t = {0};
tu vires et tu initialises membre à membre.

ciao...
BruNews, MVP VC++
vendredi 22 juin 2007 à 18:27:57 | Re : Virer la CRT

racpp

Administrateur CodeS-SourceS
Salut,
Je pense que pour pouvoir virer complétement la CRT il faut travailler en C pur (pas de C++). Voici un exemple de code source avec les options de compilation et linkage que tu peux examiner: Indicateur RAM

Voici un petit débat qui devrait t'interesser: ICI
vendredi 22 juin 2007 à 18:54:32 | Re : Virer la CRT

HeavenForsaker

Merci les gars,
j'ai trouvé la fonction qui était a l'origine des warning...ZeroMemory...
J'ai mis SecureZeroMemory à la place et plus de warning.
vendredi 22 juin 2007 à 18:58:45 | Re : Virer la CRT

HeavenForsaker

Ok merci racpp je vais jeter un oeil la dessus, tout ce qui est optimisation de code m'interresse
vendredi 22 juin 2007 à 23:03:56 | Re : Virer la CRT

NairodDorian

Bonsoir,

Juste pour ajouter de la precision la doc dit :
The /NODEFAULTLIB option tells the linker to remove one or more default libraries from the list of libraries it searches when resolving external references.
[...]

If you use /NODEFAULTLIB, for example, to build your program without the C run-time library, you may have to also use /ENTRY to specify the entry point (function) in your program.

lundi 25 juin 2007 à 11:05:52 | Re : Virer la CRT

HeavenForsaker

Euh juste une question BruNews, quand tu fait ça :

#pragma comment(linker, "/entry:myWinMain")
void __stdcall myWinMain()
{
  // TON CODE ICI
 
  ExitProcess(0); // SORTIR ICI
}

Pourquoi mettre un ExitProcess(0) à la fin ? un simple return ne ferait pas l'affaire ?
lundi 25 juin 2007 à 11:56:49 | Re : Virer la CRT

BruNews

Administrateur CodeS-SourceS
return v;
c'est CRT qui assure ExitProcess(v) pour quitter.
Gaffe que sans CRT le prog restera en mémoire dans de nombreux cas sans appel explicite ExitProces().

ciao...
BruNews, MVP VC++

1 2

Cette discussion est classée dans : erreur, appel, prog, crt, virer


Répondre à ce message

Sujets en rapport avec ce message

debugger exe sans CRT [ par HeavenForsaker ] Bonjour,J'ai viré la CRT de mon prog et j'ai une erreur que j'ai du mal à localiser qui me crée le message suivant :L'instruction à "0x746ac7d6" emplo erreur de conception? [ par frdestroyers27 ] Salut a tous!ca serait pour savoir si je fait une erreur de conception!j'ai un fichier main.cpp avec la fonction WinMain dedans qui contient juste un administration [ par abirti ] Bonjour, j'ai trouvé un problème dans l'utilisation des fonctions SNMP en particulier dans l'appel de ces fonctions un message d'erreur apparaît:"erro Erreur dans l'edition des liens [ par Pspice ] J'ai un pbm lors de l'edition des liens d'un progJ'utilise visual c++, je compile mon prog tt se passe bien aucune erreur aucun warningEt lorsque je l appel de gnuplot a partir d'un prog en c++ [ par keno83 ] bonjour, je vous explique un peu la situation: j'ai un fichier .txt avec plusieurs colonnes et j'aimerai faire un graphe des colonnes 2,3 etc  en fonc Erreur C2352 appel non conforme d'une fonction membre non static [ par astvt ] Bonjour à tous, j'ai écris un programme de simulation en C# et je le transcrit en Visual C++ pour apprendre. J'ai une fenêtre principale et une foncti Erreur fatale du prog! [ par shadow1779 ] XD ne faites pas attention au nom du topic rien n'est vrai, j'ai juste mis un nom corçé afin de voir qui va le lire en ce 1er janvier 2006, j'en profi appel d'une fonction [ par dletozeun ] bonjour,Je voudrais savoir s'il est possible d'appeler une fonction dont ont ne connais pas le nom dans le prog lui meme, mais en le recuperant dans u [MinGW] Virer les dependances au CRT [ par Neo_Fr ] 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, f icone de l'executable [ par leprov ] salut a tousbon voila, probleme tout bete, je fais mon application, je met 2 icones en ressources pour que dans la systray, je puisse avoir 2 états vi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales