Link

Hier könnt ihr sowohl zur x86 Architektur als auch zu Win32ASM Fragen stellen.

Moderatoren: crack, Krüsty, Marwin

Beitragvon Mainframe » Dienstag 6. April 2004, 15:56

Das Problem:
Ein Programm (model flat) soll aus mehreren Modulen bestehen, die ich mit CALL anspringen will.
Meiner Meinung nach habe ich alles richtig gemacht, also ENTERN, FAR, PUBLIC usw.
Aber der Compiler bringt einen Fehler beim CALL "error A2004: symbol type conflict"
und der Link bringt "unresolved external symbol".
Wer kann mir helfen ??
Grüße Uli
Mainframe
Newbie
 
Beiträge: 8
Registriert: Dienstag 6. April 2004, 14:42

Beitragvon CDW » Dienstag 6. April 2004, 17:51

sorry, meine Kristallkugel ist gerade in Reparatur ;)
welcher Compiler (am besten mit version), überhaupt welcher Dialekt - MASM, TASM, FASM, NASM ?
Stackrahmen mit ENTER einrichten ist schon ziemlich ungewöhnlich, genauso wie FAR nutzung - vielleicht wäre auch ein Stückchen Code nicht schlecht - ansonsten fallen mir schon für MASM Compiler ein dutzend Fehlerquellen ein...

Erste Diagnose: das mit dem Linker ist normal - da du ja einen Fehler bei Call hast, wenn dieser weg ist dürfte beim Linken keine Probleme geben... kann ja auch ein vertipper sein (alles schon passiert :rolleyes:)
Ansonten bitte mehr infos :)
CDW
Alter Hase
 
Beiträge: 62
Registriert: Donnerstag 2. Oktober 2003, 17:17

Beitragvon Mainframe » Mittwoch 7. April 2004, 10:57

Na, dann wollen wir mal ein bisschen Licht in die Kugel bringen...
Ich verwende MASM Version 6.14.8444
Anschließend die Source-Ausschnitte und die Compile/Link Aufrufe.
Grüße an die Kugel...
__________________________________________________________________
Hauptprog:
.386
.model flat,stdcall
EXTERN Roll9:FAR
Start:
*
*
*
call Roll9
END Start
__________________________________________________________________

Modul1:
.386
.model flat,stdcall
PUBLIC Roll9
Start:
Roll9 PROC FAR
*
*
*
Roll9 ENDP
END Start
___________________________________________________________________

ml /c /coff /Fl /Sn Hauptprog.asm
ml /c /coff /Fl /Sn Modul1.asm
link /subsystem:windows Hauptprog.obj Modul1.obj menue.obj
___________________________________________________________________
Mainframe
Newbie
 
Beiträge: 8
Registriert: Dienstag 6. April 2004, 14:42

Beitragvon CDW » Mittwoch 7. April 2004, 13:17

also wenn man statt EXTERN einen Proto benutzt:
Roll9 proto
dann läufts. Warum das mit Exertn nicht funktionier kann ich nicht sagen.

Aber einfacher wäre es die benötigtetn module/Prozeduren in eine INC datei auszulagern und diese dann einfach mit include einbinden - geht übrigens mit *.asm auch (mit INCs hat man aber noch weniger Stress, bzw. wenn man komplette ASM Quelltexte einbindet, dann mekert der Compiler wegen den Neudefinierungen rum)
Je nach Anforderungen würde ich zur Projektverwaltung RADASM IDE emfehlen (radasm.visualassembler.com/). Lässt sich für alle Assemlies einsetzen und ist schön übersichtlich (zum Teil vergleichbar mit VC++ umgebung)
CDW
Alter Hase
 
Beiträge: 62
Registriert: Donnerstag 2. Oktober 2003, 17:17

Beitragvon Mainframe » Mittwoch 14. April 2004, 13:34

Hallo CDW, zum letzten Mal (für dieses Thema).

Mit PROTO und INVOKE geht alles prima.
Noch mal vielen Dank für die schnelle Hilfe.

Grüße von der Mainfamesection.
Mainframe
Newbie
 
Beiträge: 8
Registriert: Dienstag 6. April 2004, 14:42


Zurück zu Assembler

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron