WIN API Hello World



  • Hallo ich hab mir vor einiger Zeit mal eine Win API Einführung runtergeladen und die möchte ich mir jetzt mal gerne nächer anschauen.

    Laut dem Tutorial kann man so eine Message Box machen.

    #include <windows.h>
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
    	MessageBox(NULL,"Hello, Windows 98","Hello World",0);
    }
    

    Aber ich bekomme diese Fehlermeldung:

    Erzeugen
    [Linker Fehler] Unresolved external '_main' referenced from E:\BORLAND BUILDER 6\LIB\C0X32.OBJ



  • Es reicht nicht, einfach nur das Programm abzutippen und durch den Compiler zu jagen. Du mußt auch den richtigen Projekttyp einstellen, damit der Compiler weiß, was er drumherum anlegen soll.

    (Konsolen-Anwendungen starten mit der main(), Win32 Anwendungen mit der WinMain() - du hast anscheinend deine Windows-Progamm als Konsolenanwendung angelegt)



  • ersetze diese zeile

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    

    gegen

    int main()
    

    und dann sollte es gehen.
    🙂



  • jo jetzt gehts :>

    thx :xmas1:



  • mhhm irgendwie funktioniert die hälfte aus dem Tutorial nicht -.-

    Hat wer vielleicht ein gutes Anfänger Tutorial ?



  • Und damit bekommt man ein Windows-Programm??? 😮 int main produziert doch nur eine Console. Kein Wunder, daß da die Hälfte aus dem Tutorial nicht funzt.

    Für ein Windows-GUI-Programm muß in den Compiler-Einstellungen das Zielsystem auf "Windows" oder "GUI" eingestellt werden (wie das beim Builder geht, weiß ich jetzt gerade nicht).

    Die Frage nach Anfänger-Tutorials kommt so etwa einmal im Monat:

    http://www.win-api.de/
    http://pronix.linuxdelta.de/C/win32/index.shtml



  • ah ok danke 🙂



  • Wenn du allerdings mit diesem Tutorial weiterarbeiten möchtest dann empfehle ich dir einfach nur die WinLibs einzubinden(explizit)
    Hier der Link: http://www.c-plusplus.net/forum/viewtopic-var-t-is-199413.html
    (ganz unten).
    Also du musst nur diese Libs einbinden:

    #pragma comment(lib,"winmm.lib") 
    #pragma comment(lib,"kernel32.lib") 
    #pragma comment(lib,"user32.lib") 
    #pragma comment(lib,"gdi32.lib") 
    #pragma comment(lib,"winspool.lib") 
    #pragma comment(lib,"shell32.lib")
    

    Einfach an oberster Stelle im Quelltext einfügen. 😉

    P.S.: Egal welches Tutorial er nimmt er wird diesen Linker-Error immer haben.

    Edit: Oh ich habe nicht gesehen dass er irgendeinen Builder benützt. Vielleicht geht das trotzdem so. 😃



  • winapi-freak schrieb:

    ersetze diese zeile

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    

    gegen

    int main()
    

    und dann sollte es gehen.
    🙂

    Das ist aber nicht für Windowprogrammierung.


Anmelden zum Antworten