Assembler error A2006: undefined symbol: msg
-
Hallo,
bei folgendem Code bekomme ich immer o.g. Fehler beim assemblieren:.386 .model flat,stdcall includelib c:\masm32\lib\kernel32.lib includelib c:\masm32\lib\user32.lib MessageBoxA proto :dword, :dword, :dword, :dword ExitProcess proto :dword .data titel db "test",0 text db "auf Ok, klicken",0 .code start: push 40h call msg push 0 call ExitProcess end start msg proc mov ebx,30h ret msg endp
Verstehe ich nicht ganz, da ich doch die Prozedur msg definiert habe...
Wie kann der Assembler sie dann nicht finden?Vielen Dank im Voraus.
grüße
-
die Prozedur ist an der Stelle des Aufrufs noch nicht bekannt -> deklarier den Prototypen vor dem Aufruf (msg PROTO)
-
Außerdem befindet sich die Prozedur msg außerhalb MASMs 'Sichtbereich'(end start)
-
masm schrieb:
Außerdem befindet sich die Prozedur msg außerhalb MASMs 'Sichtbereich'(end start)
Ah, daran lags^^, das mit proto hat nicht geklappt, da hat denn der Linker gemeckert wegen external symbol.
Vielen Dank für deine Hilfe
-
raufaser schrieb:
masm schrieb:
Außerdem befindet sich die Prozedur msg außerhalb MASMs 'Sichtbereich'(end start)
Ah, daran lags^^, das mit proto hat nicht geklappt, da hat denn der Linker gemeckert wegen external symbol.
Vielen Dank für deine Hilfe
Wenn man PROTOs deferiert, kann man die Funktionen auch mittels INVOKE aufrufen. Gemeckert hat der Linker im Übrigen, da die Funktion schlicht und einfach nicht existiert hat