Pregunta

Si trato de armar el siguiente código, me sale un error de A2006 (error A2006: símbolo no definido: StrCmp).

Aquí está mi código:

.386
.model flat,stdcall
option casemap:none

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

includelib  \masm32\lib\kernel32.lib
includelib  \masm32\lib\masm32.lib
includelib  \masm32\lib\stdlib.lib
includelib \masm32\lib\user32.lib

.data
YvanSoftware db "(c) YvanSoftware - ALL RIGHTS RESERVED", 13 ,10 ,0
EnterYourName db "Please enter your name: ", 0
CRLF db 13,10,0
TheHolyMan db "Yvan", 0
Seriously db "Seriously? You're the MAN!", 13,10,0
LoserName db "What a loser name.", 13,10

.data?
buffer db 100 dup(?)
.code
start:
 invoke StdOut,addr YvanSoftware
 invoke StdOut, addr EnterYourName
 invoke StdIn, addr buffer, 100
 invoke StdOut, addr CRLF

 invoke StrCmp,addr buffer, addr TheHolyMan ;error fires here
 je HolyMan
IfNotHolyMan: 
 invoke StdOut, addr LoserName
 jmp EndIfHolyMan
HolyMan:
 invoke StdOut, addr Seriously
 jmp EndIfHolyMan
EndIfHolyMan:

 invoke ExitProcess,0
END start

yo soy un n00b completa en ensamblador, y estoy tratando de aprenderlo. ;)

Yvan

¿Fue útil?

Solución

Usted no menciona ningún error en la invocación por StdOut, por lo que supongo que uno ensambla. En este caso, el error debe ser exactamente lo que dice: StrCmp no se reconoce en los ficheros include que enumeró. Así que asegúrese de uno de sus incluye en realidad define StrCmp (y ya que no recuerdo lo que por defecto el modo MASM, caso respecto sensitivy para estar en el lado seguro).

dado que está utilizando stdcall, su invocación se Gen una referencia externa a algo así como _StrCmp @ 8 (@ 8 porque hay dos parms, siendo cada 4 bytes). Por lo que también tendrá que tener este nombre decorado presente en una de las librerías INCLUDELIB. Este no es el problema que está viendo, sin embargo, ya que este error es una masm en lugar de un enlazador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top