2012-09-23 4 views
2

Je suis nouveau ici. Voici mon problème:C & MinGW: Hello World me donne l'erreur "programme trop grand pour tenir dans la mémoire"

J'ai installé MinGW sur mon netbook Windows 7 Home Premium 32 bits avec processeur Intel Atom N550, 1,50 GHz et 2 Go de RAM.

Maintenant, je fait un fichier nommé hello.h et a essayé de le compiler via CMD avec la commande suivante: "gcc c: \ workspace \ c \ helloworld \ hello.h -o Out.exe"

il compile sans erreur, mais lorsque je tente de courir Out.exe, il me donne l'erreur suivante: « programme trop grand pour la mémoire »

choses que j'ai vérifié:

  • I ont ajouté "C: \ MinGW \ bin" à Windows PATH Variable
  • J'ai googlé pendant environ une heure, mais depuis que je suis un débutant, je ne peux pas vraiment savoir quel est le problème.
  • J'ai compilé le même code sur ma machine 64 bits, compile parfaitement , mais ne peut pas être exécuté en raison de < 64 bits -> 16 bits problématique.

J'apprécierais vraiment, si quelqu'un pouvait comprendre, quel est le problème. Btw, voici mon bonjour.h:

#include <stdio.h> 

int main(void){ 
    printf("Hello, World\n"); 
} 

... C'est tout. Merci pour vos réponses. Cheers, Boris

+5

Probablement pas la cause du problème, mais vous devriez nommer votre fichier source 'hello.c' au lieu de' hello .h'. Les fichiers '.h' sont destinés' 'à les inclure dans d'autres fichiers (généralement des déclarations), tandis que les fichiers' .c' contiennent les implémentations réelles (définitions). – reima

+0

Je viens de le tester.J'obtiens des erreurs étranges si je compile ceci avec une extension .h sous mingw aussi. – Kludas

+0

Bon seigneur, comment peut-il être? Suis-je vraiment si bête? :) Changer l'extension en * .c l'a corrigé. Merci beaucoup! – Boris

Répondre

2

Renommez votre fichier à HELLO.c

Les fichiers .h sont en-têtes dans la programmation C et vous devez mettre certaines choses comme les signatures en eux et le corps de vos méthodes devraient être en .c fichier

+1

Alors qu'est-ce que MinGW fait qui provoque ce comportement bizarro? –

2

Par défaut, les fichiers avec l'extension .h sont traités comme en-tête fichiers par GCC. Normalement, les fichiers d'en-tête ne sont pas censés être directement transmis au compilateur. Ils sont censés être #include d dans les fichiers d'implémentation. Toutefois, GCC implémente une fonctionnalité spéciale lorsqu'il voit un fichier d'en-tête lui être directement transmis. La spécification d'un fichier .h dans la ligne de commande permet à GCC de l'interpréter comme une demande de génération d'un fichier d'en-tête précompilé pour ce fichier .h. En utilisant une option -o vous avez forcé le compilateur à donner au fichier d'en-tête précompilé résultant un nom spécifique out.exe. Néanmoins, le fichier résultant n'est pas un fichier exécutable, c'est un fichier d'en-tête pré-compilé. Vous pouvez l'ouvrir dans un éditeur hexadécimal et voir qu'il commence par gpch, qui est une signature d'en-tête de pré-compilateur de GCC. Toute tentative pour "exécuter" ce fichier conduira à des résultats sans signification. (C'est essentiellement comme essayer de renommer un fichier complètement aléatoire à l'extension .exe puis de le "lancer".)