2009-10-12 3 views
0

내가 하나에 두 개의 파일, 이 나는 ​​등의 변수 SEED를 선언 : 내가 사용하여 두 파일을 컴파일 할 때 어셈블리 x86에서 '해결되지 않은 외부'오류를 수정하는 방법?

;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 

내가 뭘 잘못하고 있니?

감사합니다.

답변

1

file1.asm의 SEED는 PUBLIC을 다른 모듈에서 볼 수 있도록 만들어야합니다.

이것은 어셈블러에 따라 사용을 것을이 "글로벌"대신 요구할 수

 PUBLIC SEED 

참고로 file1.asm 어딘가에 줄을 추가하여 수행됩니다.
이러한 범위 문은 파일의 어느 곳에서나 올 수 있지만이 작업이 수행되는 위치와 관련하여 여러 스타일/규칙이 있습니다. 두 가지 주요 것들입니다 : 모든 PUBLIC 문

  • 그냥 각 변수 선언 위에 그룹화 된 파일의 상단 부근

    • 당 자체 예를 들어

    기타 규약상의 일반적으로 유사하다 예를 들어, 모든 공용 데이터 변수의 범위는 파일 상단 근처에 있지만, procs의 공용 선언은 적용 가능한 경우 각 파일 바로 위에 있습니다.

  • +0

    어떻게 완료 되나요? –

    +0

    #yuval : 개정 된 응답에서 이것이 어떻게 수행되는지 확인하십시오. 참고로, 사용중인 어셈블러에 따라 약간의 차이가 있지만 일반적으로 PUBLIC은 해당 목적을위한 적절한 키워드입니다. – mjv

    +0

    대단히 감사합니다! –

    관련 문제