Sto provando a creare un programma helloworld utilizzando solo le librerie masm e non masm32. Ecco il frammento di codice:errore LNK2001: simbolo esterno non risolto _MessageBox
.386
.model flat, stdcall
option casemap :none
extrn MessageBox : PROC
extrn ExitProcess : PROC
.data
HelloWorld db "Hello There!", 0
.code
start:
lea eax, HelloWorld
mov ebx, 0
push ebx
push eax
push eax
push ebx
call MessageBox
push ebx
call ExitProcess
end start
Sono in grado di assemblare questo usando MASM:
c:\masm32\code>ml /c /coff demo.asm
Microsoft (R) Macro Assembler Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.
Assembling: demo.asm
Tuttavia, sono in grado di collegarlo:
c:\masm32\code>link /subsystem:windows /defaultlib:kernel32.lib /defaultlib:user
32.lib demo.obj
Microsoft (R) Incremental Linker Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.
demo.obj : error LNK2001: unresolved external symbol _MessageBox
demo.obj : error LNK2001: unresolved external symbol _ExitProcess
demo.exe : fatal error LNK1120: 2 unresolved externals
Sto includendo le librerie durante il collegamento, quindi non sono sicuro del motivo per cui dice ancora i simboli non risolti?
UPDATE:
c:\masm32\code>link /subsystem:windows /defaultlib:kernel32.lib /defaultlib:user
32.lib demo.obj
Microsoft (R) Incremental Linker Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.
demo.obj : error LNK2001: unresolved external symbol [email protected]
demo.exe : fatal error LNK1120: 1 unresolved externals
UPDATE 2: codice di lavoro finale!
.386
.model flat, stdcall
option casemap :none
extrn [email protected] : PROC
extrn [email protected] : PROC
.data
HelloWorld db "Hello There!", 0
.code
start:
lea eax, HelloWorld
mov ebx, 0
push ebx
push eax
push eax
push ebx
call [email protected]
push ebx
call [email protected]
end start
Grazie! Questo ha risolto uno degli errori di collegamento ma non l'altro .. vedi l'aggiornamento – Jumbo
Buon punto, vedi la mia modifica. –
Fantastico! ha funzionato perfettamente ora. Mi sento come un n00b - puoi suggerire qualche documento/libro da cui scegliere tutte queste cose? MSDN è troppo scoraggiante per esplorare quando sei un principiante. – Jumbo