Simbolo no resuelto por el linker.

Iniciado por Usuario887, 28 Febrero 2021, 01:03 AM

0 Miembros y 1 Visitante están viendo este tema.

Usuario887

Hola.

Estaba buscando una forma de obtener la linea de comandos desde un programa escrito para MASM con la funcion GetCommandLineA de kernel32.lib, pero el linker no resuelve el simbolo:

CitarPOLINK: error: Unresolved external symbol '_GetCommandLineA'.

Lei sobre las convenciones de llamada en un articulo mencionado por @Eternal Idol: http://unixwiz.net/techtips/win32-callconv.html#decor pero la verdad no estoy seguro de en que esta afectando esto aqui.

El codigo:

Código (asm) [Seleccionar]
.686p
.model flat, stdcall

includelib \masm32\lib\msvcrt.lib
includelib \masm32\lib\kernel32.lib

printf proto C, :dword
exit proto C, :dword

extern stdcall GetCommandLineA: proc

t macro i:vararg
local s
const segment
s db i, 0
const ends
exitm <offset s>
endm

.data?
db ?

.data
db ?

.code

start:
call main
invoke exit, 0h

main proc

call GetCommandLineA

ret
main endp

end start

Eternal Idol

Código (asm) [Seleccionar]
extern stdcall GetCommandLineA@0: proc
...
call GetCommandLineA@0
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Usuario887

No puede ser... eso habia intentado pero con proto e invoke. ¿Por que no funciona con proto e invoke?

Código (asm) [Seleccionar]
GetCommandLineA@0 proto stdcall

CitarPOLINK: error: Unresolved external symbol '_GetCommandLineA@0@0'.


Eternal Idol

#3
Pero lo es, con PROTO e INVOKE no hace falta explicitar el decorado.


Código (asm) [Seleccionar]
GetCommandLineA PROTO STDCALL
...
invoke GetCommandLineA
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Usuario887

Pues tienes razon... me estoy acordando de los tropiezos de aprender una nueva forma de programacion.

Gracias por tu ayuda y atencion.
Saludos.

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón