Código
TITLE Pruebas INCLUDE c:\masm32\include\Irvine32.inc .data origen byte 10h,20h,30h,40h origen2 byte 12h,34h,56h,78h .code main PROC mov ax,word PTR [origen] mov ax,word PTR [origen2] call DumpRegs exit main ENDP END main
Cuando coloco TOOLS->MASM32->BUILD
el código de objeto se genera sin ningún problema, pero en cuanto se quiere enlazar las bibliotecas de enlace me marca el siguiente error:
Código:
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
prueba2.obj : error LNK2001: unresolved external symbol _ExitProcess@4
prueba2.obj : error LNK2001: unresolved external symbol _DumpRegs@0
prueba2.exe : fatal error LNK1120: 2 unresolved externals
_
Link error
Presione una tecla para continuar . . .
En cuanto uso la bibliotecas de enlace de MS-Windows (kernel32.lib) y el INCLUDE kernel32.inc no tengo problema alguno.
Lo que poseo dentro de c:\masm32\include\ y \lib\ es lo siguiente:
Código:
SmallWin.inc
Irvine32.inc
Irvine16.inc
Irvine36.lib
Irvine16.lib
kernel32.lib
He intentado colocar las correspondientes lib en el path include (junto con las .inc) y en lib las include (junto con las .lib correspondientes)
y de ninguna forma consigo poder generar el ejectuable, si alguien me pudiera decir como se puede ensamblar y enlazar el codigo que adjunté se lo agradecería
entiendo que la librebría Irvine son parte de un libro pero las utilizo por que me estoy iniciando en la programación ASM
Muchas gracias
Solución se deben incluir las siguientes librerías:
Código
INCLUDELIB c:\masm32\include\Irvine32.lib INCLUDELIB c:\masm32\include\Kernel32.lib INCLUDELIB c:\masm32\include\User32.lib
esta se colocan después de INCLUDE c:\masm32\include\Irvine32.inc
¿El porqué?
El motivo se da que en el libro se utiliza Irvine32.inc este archivo contiene prototipos de procedimientos de la biblioteca Irvine32.lib y esta biblioteca se encarga de enlazarse con Kernel32.lib y User32.lib dependiendo del procedimiento.
El primer error ocurrió debido a que exit es equivalente a la API MS-Windows ExitProcess que corresponde a la biblioteca de vínculos dinámicos (Kernel32.lib)
como no estaba incluida ocasionaba el error. En cuanto a DumpRegs ocurrió debido a que no estaba incluida la librería Irvine32.lib
El segundo error ocurrió luego de agregar ambas librerías MessageBox que está dentro de la librería de enlace irvine32.lib esta se enlaza con user32.lib para mostrar mensajes y como no estaba incluida ocasionó el segundo error.