2013-02-23 5 views
0

이것은 (매우 간단한) 프로그램입니다. 그것은 function 함수가 내 자신의 .cpp 파일 안에있을 때 완벽하게 작동하지만 다른 .asm 파일에 링크하면 오류가 발생합니다. 저는 Visual C++ 2010 Express에서 컴파일 중이며, 제가 사용하고있는 32 비트 어셈블리라고 생각합니다. 그래서 이러한 오류에 익숙하지 않은거야 이건 내 처음 조립 사용어셈블리를 개별 파일로 컴파일 할 때 컴파일 오류가 발생합니다.

error A2013: .MODEL must precede this directive 
error A2034: must be in segment block : function 
error A2034: must be in segment block 
error A2034: must be in segment block 
fatal error A1010: unmatched block nesting : function 

:

#include <iostream> 

extern "C" int function(); 

int main() { 

    std::cout << function(); 

    std::cin.get(); 
} 

function

는 다음과 같이 정의된다

.code 

function proc 
    mov eax, 50 

    ret 
function endp 

end 

그리고 오류를 받고 있어요 . 그들이 의미하는 것은 무엇이며이 프로그램을 어떻게 작동 시키나요?

답변

0

.model 및 cpu 선언이 있어야하며 일반적으로 스택 선언도 있어야합니다. 여기를보세요 : http://www.talreg.com/?cat=58

+0

첫 번째 동영상이 말한 것을했습니다. 이제 오류가 발생했습니다 : '확인되지 않은 외부 기호 _function 함수 _main' 참조됩니다. 또한 : '치명적인 오류 LNK1120 : 해결되지 않은 1 개의 외부' – 0x499602D2

+0

@ David : 어쩌면 어리석은 충고 일지 모르지만, asm에서 함수 _function을 명명하려고 시도한 적이 있습니까? 링커가'function' 대신'_function'을 찾고있는 것처럼 보입니다, 명명 컨벤션이 될 수도 있습니다 –

+0

@AndyProwl 그 것이 작동하는지 볼 것입니다. 1 초 – 0x499602D2

관련 문제