ich kann keine libs einbinden (linker spinnt?)

Offizieller deutscher Support für das MASM32 SDK. Download FAQ

Moderatoren: crack, Krüsty, Marwin

Antworten
der asmnewbie

ich kann keine libs einbinden (linker spinnt?)

Beitrag von der asmnewbie » Montag 28. August 2006, 17:50

Wenn ich meinen Minicode assemblieren will läuft erstmal alles ganz normal, bis zum Linken. Dann sagt der: ungültige bibliothek.

Was tun?

CDW
Alter Hase
Beiträge: 62
Registriert: Donnerstag 2. Oktober 2003, 17:17
Kontaktdaten:

Beitrag von CDW » Montag 28. August 2006, 17:54

Code? Linkeraufruf? womit assemblierst Du? Womit linkst Du? Eventuell andere Warnungen/Fehlermeldungen usw.

Sonst liest sich das wie "Mein rotes Auto fährt nicht, warum?" ;)

der asmnewbie

Beitrag von der asmnewbie » Montag 28. August 2006, 18:08

Code: Alles auswählen

.386
.MODEL FLAT, STDCALL

option casemap : none

include \masm32\include\windows.inc

includelib \masm32\lib\user32.lib

MessageBoxA equ _MessageBoxA
ExiProcess  equ _ExitProcess

.stack

.data
	WindowTitle   db "Meine Messagebox"              , 0
	WindowMessage db "Klick mich bis ich verschwinde", 0

.code
start:
	push MB_OKCANCEL
	push offset WindowTitle
	push offset WindowMessage
	push 0
	call MessageBoxA
	
	push 0
	call ExitProcess
END start
ich hab die link.exe schon mit lnk563.exe überschrieben.
dann hab ich einmal nur mit ml.exe probiert un die alles machen lassen,un dann mit ml /c /coff un link /subsystem:windows

weitere Fehler:
_MessageBoxA undefiniert,
_ExitProcess undefiniert

Benutzeravatar
crack
Administrator
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf
Kontaktdaten:

Beitrag von crack » Dienstag 5. September 2006, 03:04

probier doch mal folgendes:

Code: Alles auswählen

.386 
.MODEL FLAT, STDCALL 

option casemap : none 

include \masm32\include\windows.inc 
include \masm32\include\user32.inc

includelib \masm32\lib\user32.lib 

MessageBoxA equ _MessageBoxA 
ExiProcess  equ _ExitProcess 

.stack 

.data 
   WindowTitle   db "Meine Messagebox"              , 0 
   WindowMessage db "Klick mich bis ich verschwinde", 0 

.code 
start: 
   push MB_OKCANCEL 
   push offset WindowTitle 
   push offset WindowMessage 
   push 0 
   call MessageBoxA 
    
   push 0 
   call ExitProcess 
END start 
Hintergrund ist folgender: zu einer .lib Datei gehört idR eine .inc Datei in der die dazugehöreneden Prototypdefinitionen stehen, also z.B.:

Code: Alles auswählen

_MessageBoxA   proto :dword,:dword,:dword,:dword
Diese Prototypdefinition wird benötigt damit der Linker weiss wieviel Parameter und von welchem Typ der Prozedur übergeben werden.
mit freundlichen grüssen,
with best regards,

crack

Antworten