Link 2 OBJ-Dateien

10/04/2008 20:25 link#1
Schönen Tag.
Meine erste Datei sieht so aus:
Code:
.486
.model flat, stdcall

extrn incr:proc

.data
  str db "abcd", 0

.code
main:
  push offset str
  call @@
  @@:
  pop eax
  add eax, 0Bh
  push eax
  push offset incr
  ret
  invoke MessageBoxA, 0, eax, 0, 0
  end main
Meine zweite so:
Code:
.486
.model flat, stdcall

.code
incr proc off:DWORD
  xor eax, eax
  mov ecx, [off]
  mov al, BYTE ptr [ecx + 4]
  test al, al
  jnz @@end
  mov eax, [ecx]
  bswap eax
  inc al
  bswap eax
  mov [ecx], eax
@@end:
  mov eax, ecx
  ret
endp
end
Nachdem ich diese assembliert habe und versuche sie zu linken, bekomme ich den Fehler, dass 'incr' in der ersten Datei unbekannt ist.

Für das Assemblieren wird die Prozedur hierdurch bekannt gemacht: "extrn incr:proc".
Allerdings scheint der Linker deren Adresse nicht zu finden.
Weiß jemand, woran das liegt und/oder wie man den Fehler beheben kann?
10/05/2008 02:46 mr.rattlz#2
Welchen Linker verwendest du, wie lautet der genaue Befehl mit dem du das versuchst und wie ist die genaue Fehlerausgabe?

Solltest du den Linker von MASM verwenden müsste der Befehl in etwa so aussehen denke ich:
Code:
link datei1 datei2,ausgabe.exe
10/05/2008 03:20 link#3
Ich hatte schon vermutet, dass du antworten würdest :pimp:

Ok, Problem gelöst, danke für deine Hilfe.

Entweder in one.asm:
Code:
extrn incr:proto :DWORD
oder in two.asm:
Code:
public incr
(Tut mir Leid, es war ein dummer Fehler.)