Inline-Assembler: "mov eax, offset varxy" geht nicht

Skandalos

Grünschnabel
Hi

im Rahmen eines Win32 Konsole Programms kommt eine Inline-Assembler Routine vor, innerhalb derer ich allerdings wiederum auf eine C++ Library Routine (hier: fwrite) zugreifen will. Um die Parameter auf den Stack zu geben (wie in der MSDN beschrieben), hab ich folgendes codiert:

Code:
		mov eax, offset pDatei
  		push eax
  		mov eax, offset iSize
  		push eax
  		mov eax, offset iOutPos
  		push eax
  		mov eax, offset pOFbuf
  		push eax
  		call fwrite
  		pop eax
  		pop eax
  		pop eax
  		pop eax

Sieht unproblematisch aus, alle Variablen sind korrekt in main deklariert, leider wird der Fehler "error C2415: improper operand type" gemeldet, und zwar für jeden mov eax, offset xyz Befehl. Seltsamerweise nennt der Compiler als Zeilennummer des errors stets die jeweils folgende, allerdings verschwindet die Fehlermeldung nur dann, wenn ich die Zeile lösche/ändere, wo ich OFFSET benutze.

Jemand einen Tip, was ich hier falsch mache?
 
Ok, habs eben selbst rausgefunden. Die Variablen müssen außerhalb von main global deklariert werden, sonst funktioniert offset nicht.
 
Zurück