Mein 1. Masm Programm
-
Hi Leute... ich hab mir nen tolles buch gekauft. Da war ein MessageBox beispiel für Masm. Hab ich original so abgetippt aber bekomme nur fehler. Vielleicht kennt das ja jemand von euch und kann mir da weiter helfen. wär echt super ;)!
msgbox.asm :
.386 .model flat, stdcall include e:\masm32\include\windows.inc include e:\masm32\include\user32.inc include e:\masm32\include\kernel32.inc includelib e:\masm32\lib\user32.lib includelib e:\masm32\lib\kernel32.lib .data Caption db "MSG-BOX in MASM",0 Text db "MessageBox mit Ok weg klicken",0 .code start: invoke MessageBox,NULL,addr Text, addr Caption, MB_ICONINFORMATION invoke ExitProcess,0 end start
Das ganze kompiliert mit :
ML /c /coff msgbox.asm LINK /Subsystem:windows msgbox
Und der Fehler:
windows.inc(117) : error A2004: symbol type conflict : bool windows.inc(7074) : error A2179: structure improperly initiali windows.inc(7074) : error A2008: syntax error : in structure windows.inc(7962) : error A2179: structure improperly initiali windows.inc(7962) : error A2008: syntax error : in structure windows.inc(7975) : error A2179: structure improperly initiali windows.inc(7975) : error A2008: syntax error : in structure windows.inc(7987) : error A2179: structure improperly initiali windows.inc(7987) : error A2008: syntax error : in structure windows.inc(7992) : error A2179: structure improperly initiali ...
uuuuuuuuuund so weiter
hört garnicht auf!
Ich hab mir Beispiele angeschaut... ich hab in google gesucht... in die FAQ geschaut... aber ich kann nix finden.wär echt cool wenn mir da jemand weiter helfen kann!!
ach nochwas... wenn ich die windows.inc weg lasse und alles anders schreiben... z.B. "invoke MessageBox,0,addr Text, addr Caption, 64" dann klappt alles wunderbar! naja...
thx schon mal im vorraus!
-
Ich weiss nicht wieso aber wenn ich das hizufüge : option casemap :none
Dann geht es ohne probleme!Aber in meinem Buch stand da nix von...
naja hauptsache es geht jetzt
.386 .model flat, stdcall option casemap :none ; <-------- !!!
thx trotzdem cu
-
Moin Barricade,
mit der Option casemap : none teilst Du dem Assembler mit, dass er case sensitiv übersetzen soll, d.h. es wird zwischen Groß- und Kleinschreibung unterschieden.
Schau Dir doch mal die Datei windows.inc an. In der Zeile 80 wird ein Datentyp namens bool definiert: bool typedef BYTE
In Zeile 107 steht folgendes: BOOL typedef DWORD. Wieder ein Datentyp namens BOOL, nun aber großgeschrieben.
Wenn der Assembler NICHT auf Groß- und Kleinschreibung achtet, dann muss das zwangsläufig zu Fehlermeldungen führen, weil die Typenbezeichnung bool und BOOL dann für den Assembler gleich sind.
Erst wenn Du dem Assembler sagst, achte doch bitte auf Klein- und Großschreibung (option casemap : none), dann sind die Typenbezeichnungen unterschiedlich.
Ciao...
-
also muss man das bei jedem windows programm angeben?
-
jemand anders schrieb:
also muss man das bei jedem windows programm angeben?
Ja, wenn Du die Windows-Include-Dateien benutzen möchtest.
Ciao...