Windows-Programmierung mit VC++ Toolkit 2003
-
Hallo,
ich habe das MS Visual C++ Toolkit 2003 und wollte mal eine Win32-Anwendung schreiben. Dazu habe ich mir das WinXP SP2 SDK runtergeladen und installiert.
Da ich nicht wusste, wie ich dem Linker beibringe, dass er die windows.h findet, habe ich einfach mal den Inhalt des SDK-Verzeichnisses in das Toolkit-Verzeichnis kopiert. Jetzt findet der Linker auch die windows.h, aber wenn ich folgenden Code zu kompilieren versuche, krieg ich immer einen Fehler.#include <windows.h> int WINAPI WinMain(HINSTANCE hI, HINSTANCE, TCHAR*, int) { MessageBox(NULL, "Hallo", "", MB_OK); return 0; }
Der Code ist aus dem Win32-Tutorial von www.henkessoft.de.
Das ist der Fehler:
line 4: error C2055: expected formal parameter list, not a type listIch habe keine Ahnung, was da falsch ist, weil ich ja gerade erst anfange mit der Win32-Programmierung.
Die von www.henkessoft.de machen das Tutorial in der IDE von Visual Studio, also vermute ich mal, dass bei mir irgendwas fehlt, was Visual Studio noch dazu macht. Es sieht sowieso irgendwie wenig Code aus für Windows-Programmierung.
Wie schaffe ich es dann, nur mit dem Toolkit und dem SDK ein Windows-Programm zu erstellen?
Eine andere Frage noch (gehört eigentlich nach MFC):
Kann ich mit dem Toolkit eigentlich MFC programmieren, oder brauche ich dazu die IDE? Wenn ja, wie? (Die Tuts, die ich finde, machen das immer mit dem MFC-Assistent ...)Danke schonmal
ozzyrocks
-
[cpp]
#include <windows.h>int WINAPI WinMain (HINSTANCE hI, HINSTANCE hP, PSTR cmdline, int showcmd)
{
MessageBox(NULL, "Hallo", "", MB_OK);
return 0;
}
[/cpp]MfG SideWinder
-
Der Code scheint richtig zu sein. Ich hab hier das ganze mit der IDE kompiliert und es funktioniert. hmmmm
-
Danke, SideWinder!
Jetzt hab ich keinen Compiler-Error mehr.Dafür einen Linker-Error:
error LNK2019: unresolved external symbol __imp__MessageBoxA@16 referenced in function _WinMain@16
fatal error LNK1120: unresolved externalsWas ist das denn schon wieder??
@ide-user: Welche Version hast du denn? Vielleicht läuft der Code noch auf einer alten Version, aber nicht mehr auf der .NET 2003.
-
Ich hab Visual Studio .NET 2003. Sollte eigentlich der selbe Compiler sein.
Na ja, du musst noch user32.lib dazu linken
cl test.cpp user32.lib
-
@ozzyrocks: Scheinbar hast du was an den Linkereinstellungen rumgespielt, normalerweise werden die WinLIBs automatisch mitgelinkt. Egal geh unter Projekteinstellungen in die Linkereingabe und gib noch folgende an:
kernel32.lib, user32.lib und gdi32.lib
MfG SideWinder
-
MFC kannst du nicht benutzen da die MFC Libraries einfach nicht mitgeliefert werden. Kannst man auch nirgendwo (legal :D) runterladen.
-
mfc schrieb:
MFC kannst du nicht benutzen da die MFC Libraries einfach nicht mitgeliefert werden. Kannst man auch nirgendwo (legal :D) runterladen.
Wo benützt er MFC?
MfG SideWinder
-
Das war die Antwort auf seine Frage:
Kann ich mit dem Toolkit eigentlich MFC programmieren, oder brauche ich dazu die IDE?
-
sooooo, ich hab mir jetzt extra das toolkit installiert und deinen quelltext aus dem ersten beitrag benutzt. und er compiliert und linkt erfolgreich!!! (wie erwartet :D)
-
Kann es vielleicht sein das irgendein falsches Zeichen beim Kopieren entstanden ist, das man nicht sieht? Schreib den Quelltext nochmal von Hand ab.
-
SideWinder schrieb:
@ozzyrocks: Scheinbar hast du was an den Linkereinstellungen rumgespielt, normalerweise werden die WinLIBs automatisch mitgelinkt. Egal geh unter Projekteinstellungen in die Linkereingabe und gib noch folgende an:
kernel32.lib, user32.lib und gdi32.lib
MfG SideWinder
Projekteinstellungen? Gibt's die nicht bloß in der IDE?
@ide-user: Ich hab die user32.lib jetzt dazu gelinkt, jetzt bringt er keinen Fehler mehr (zumindest nicht bei der Version von SideWinder).
Aber die exe-Datei kann ich nirgends finden !?
Die sollte doch normalerweise im gleichen Verzeichnis sein wie die source-Datei, oder?
-
ich denke mal sie wird in dem verzeichnis auftauchen in dem du die compilierung gestartet hast. such doch die exe datei über die windows suche.
-
Genau, da ist sie.
Bloß war bisher alles, was ich kompiliert hatte immer in dem Verzeichnis, wo auch der Source-Code ist!?Also im Prinzip klappt es jetzt, danke an alle!!
Nochmal zum Output:
Ich benutze den Proton-Editor von Ulli Meybohm (www.meybohm.de), dort hatte ich mir ein Shortcut auf eine Batch-Datei gelegt, die den Compiler steuert und das Ergebnis danach ausführt.
Aber ich habe ewig an der Batch-Datei rumgebastelt. Hat jemand vielleicht eine Idee, wie ich das machen muss, damit er den Output an ein vorhersagbare Stelle schiebt, egal was ich mit dazu linke?
-
Hi !
Tach erstma, bin neu. Ebenfalls neu was Win32 angeht. C++ beherrsche ich halbwegs, aber bisher keine WinAPI.
Hatte den gleichen Fehler wie der OP (LNK2019), mit dem Tip von ide-user den beseitigen koennen. Was ich mich frage ist, wie ich ihm beibringen kann, einfach nach den Libraries zu suchen. Wenn ich die MSDN richtig lese gibt es dafuer die Umgebungsvariable LIB. Die ist bei mir auf
C:\Programme\Microsoft Visual C++ Toolkit 2003\lib;C:\Programme\Microsoft SDK\lib
gesetzt.
Was ist mein Fehler ?
Gruss
f
-
falls du keine lösung finden solltest kannst du ja einfach den lib ordner aus dem platform sdk ins visual c++ verzeichnis kopieren.
-
Man kann die MFC serwohl legal downloaden, einfach mal nach:
platform sdk suchen.MfG RoaN;
-
roan312 schrieb:
Man kann die MFC serwohl legal downloaden, einfach mal nach:
platform sdk suchen.MfG RoaN;
LOL. MFC != WinAPI