error LNK2019: _DumpRegs@0 외부 기호(참조 위치: _main@0 함수)에서 확인하지 못했습니다.

IT/Programming/Solution/Tip 2013. 5. 30. 12:09

이 포스트는 VIsual Studio 2008 이상 버젼에서 Irvine32 를 제대로 포함하고도 DumpRegs를 호출하지 못하는 문제점을 해결한다.

 

> Visual Studio 버젼에 맞는 어셈블리 개발환경 세팅을 갖추었고 Irvine32 디렉터리를 제대로 포함시켰을 경우를 전제로 한다.

 

요번에 잠깐 테스트할 일이 있어 Visual Studio 2008 Express에서 어셈블러 세팅을 하고 컴파일을 해보니 문제가 발생했다.

 

첫 번째 해결 방책)

INCLUDE Irvine32.inc 처럼 포함시킨 inc 파일이 있을 것이다. 대부분 상대경로로 지정해놓았을텐데, <절대경로>를 사용함으로써 문제를 해결한다.

=> (Irvine32.inc가 C:\Irvine\에 위치할 경우) 소스코드에서 INCLUDE C:\Irvine\Irvine32.inc 로 수정하여 빌드해본다.

 

두 번째 해결 방책)

 Irvine32.lib 와 같이 자신이 사용하고 있는 Irvine버젼에 맞는 lib파일을 INCLUDELIB 을 사용하여 <절대경로>로 포함시킨다.

=> (Irvine32.lib가 C:\Irvine\에 위치할 경우) 소스코드에서 INCLUDELIB C:\Irvine\Irvine32.lib 로 수정하여 빌드해본다.

(INCLUDELIB 구문을 사용하시지 않으셨다고 하더라도 INCLUDELIB 구문을 새로 작성하시면 됩니다.

INCLUDE 문도 절대경로로 적용시켜주세요.)

 

 

보아하니 이런 문제가 일어나는 시스템도 있고 문제 없이 빌드가 되는 시스템도 있던데 정확히 어떤 것이 원인이 되어 이 문제가 일어나는지는 잘 모르겠다. Irvine32.inc 파일을 살펴보니 DumpRegs가 제대로 포함되어 있으나 어셈블러에서 함수 경로를 제대로 찾아가지 못하는 문제가 일부 시스템에서는 발생하고 있는 것으로 보인다. 정확한 해결 원인을 아시는 분은 덧글로 알려주시면 감사의 말씀을 드리겠습니다.

설정

트랙백

댓글