繁体   English   中英

如何修复部件x86中的“未解决的外部”错误?

[英]How to fix an 'unresolved external' error in assembly x86?

我有两个文件,其中一个我声明变量SEED如下:

;file1.asm

.MODEL  SMALL,BASIC
.FARDATA RAND_DATA
SEED       DW      ?

.CODE
;Some code
END

另外,我尝试引用变量

;file2.asm

.MODEL  SMALL,BASIC
EXTERNDEF SEED:WORD

FOO PROC  FAR PUBLIC USES DX,DS
    MOV     SEED,DX
FOO ENDP

END

当我尝试使用代码编译两个文件时

ml file1.asm file2.asm io.lib

我收到以下错误:

error L2029: 'SEED' : unresolved external

我究竟做错了什么?

谢谢!

应该将file1.asm中的SEED设置为PUBLIC,以供其他模块查看。

这是通过在file1.asm中的某处添加一行来完成的

       PUBLIC SEED

请注意,根据您使用的汇编程序的不同,可能需要使用“ global ”。
这样的作用域语句可以在文件中的+/-位置出现,但是关于执行此操作的位置有几种样式/约定。 主要两个是:

  • 在文件顶部附近,所有PUBLIC语句都组合在一起
  • 就每个变量声明本身而言,例如

其他约定通常是上述内容的变体,例如,所有公共数据变量的作用域都位于文件顶部附近,但是proc的公共声明在适用的情况下恰好在每个文件上方进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM