2010-04-27 6 views
3

Les gars qui est le code copié à partir d'un livre (programmation Windows 5ème édition):Impossible de lier Hello World!

#include <windows.h> 

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, 
        PSTR szCmdLine, int iCmdShow) 
{ 
    MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0) ; 

    return 0 ; 
} 

Link au sujet dans lequel ce livre est recommandé. Impossible de le compiler avec VS2010. Qu'est-ce que je fais mal?

Error 1 error LNK2001: unresolved external symbol _WinMainCRTStartup 

Merci.

+0

"Impossible à compiler" n'est pas une description significative du problème. Qu'est-ce que vous "ne pouvez pas"? Vous ne pouvez pas démarrer VS2010? Vous ne pouvez pas créer un projet? Obtenir des messages d'erreur? Comment devons-nous savoir ce que vous faites mal? – AnT

+1

Qu'avez-vous fait pour configurer votre environnement? Le fait que vous imprimiez "Bonjour, Windows 98!" m'inquiète ... vous pourriez utiliser des ressources obsolètes. – Pops

+1

@AndreyT Dans mon message, il y a un message d'erreur LNK2001 –

Répondre

5

Cela dépend de la façon dont vous avez configuré le projet. Dans VS2010, si je crée un nouveau projet via Fichier-> Nouveau-> Projet, Visual C++, Projet vide, puis ajoutez un nouveau fichier C++, et copiez votre code, il compile et s'exécute très bien.

Si vous avez créé un type de projet différent, il se peut qu'il utilise des bibliothèques de liens différentes. Essayez avec le bouton droit de la souris sur votre projet dans l'Explorateur de solutions, allez dans Propriétés-> Lieur-> Système, et réglez SubSystem sur "Windows (/ SUBSYSTEM: WINDOWS)

Les APIs Win32 sont anciennes, mais pour la plupart sont parfaitement utilisable si vous voulez faire de la programmation Windows native Windows a fait beaucoup de travail pour s'assurer que tant que vous avez suivi la documentation, les anciennes API ne changeront pas Vous pouvez toujours compiler du code Windows 3.1 16 bits à partir de 1992 exécutez-le sur Windows 7. 32 bits.

Modifier: Il se peut également que dans Propriétés-> C/C++ -> Avancé, vous ayez Omettre le nom de bibliothèque par défaut défini sur "Oui", vous voulez probablement qu'il soit défini sur "Non"

Ou aussi Propriétés-> Linker-> Input-> Ignorer par défaut Libs doit être réglé sur Non

+0

Je l'avais mis comme vous l'avez suggéré et toujours pas aller. –

+0

@Knowing: Pouvez-vous décrire le processus que vous utilisez pour créer un nouveau projet? – Eclipse

+0

@Know: Avez-vous essayé de créer un nouveau projet comme Eclipse suggéré? – Bill

2

Vous devez définir les paramètres de l'éditeur de liens du projet pour créer un programme Windows GUI plutôt que d'un programme de console:

  • « Linker/système/SubSystem » doit être réglé sur « Windows (/ SUBSYSTEM: WINDOWS) »

Généralement ce paramètre se réglé correctement lors de la création du projet et choisissez une interface graphique de Windows modèle d'application. Malheureusement, si le projet est défini sur le type d'application incorrect, le paramètre est un peu enterré (il m'a fallu un peu de creuser pour le trouver).

0

Assurez-vous que vous avez réellement ajouté le fichier source au projet. Cela a fonctionné pour moi.