윈도우 프로그래밍

Lua R6034 Runtime Error in Visual Studio 2008 in Vista

하늘흐늘 2009. 4. 18. 17:45
반응형


증상
XP에서 잘 실행되던 소스가 Vista로 옮겨서 컴파일 하고 실행을 하려고 하니 R6034에러가 났다.

원인
Visual Studio 2008에서는 CRT(C RunTime, 일반적으로 컴파일러들이 자동으로 링크하는 기본 C라이브러리를 말함당)를 9.0버전을 사용한다. 하지만 내가 만들고 있던 루아스크립트 엔진이 참조하는 lua5.1.dll은 Visual Studio 2005의 CRT인 8.0버전을 사용한다. 뭐, XP에서는 그냥 루아 5.1버전과 같이 딸려오는 msvcr80.dll을 사용하면 되지만 Vista에서는 잘못된 CRT를 로드했다는 에러를 낸다. 아마도 Vista에선가, .Net에선가 dll 관리 정책의 변화떄문인 듯 보인다. 소위 말하여 WinSxS라는 거... 
  실행파일 (참조)-> Lua Script Engine DLL (참조)-> lua5.1.dll (참조)-> msvcr80.dll
                (참조)-> msvcr90.dll
 즉, manifest 파일 참조없이 Vista에서 실행한 Visual Studio 2008에서 msvcr80.dll을 읽는 것은 문제를 일으킴...


해결책
1. 우선 msvcrt80.dll은 path내에서 찾을 수 있어야 한다. 그래야 dll을 로드하겠죠?
2. taeins님 블로그에 있는 대로 menifest파일을 프로젝트에 설정하여 준다. 
   (http://taeins.egloos.com/2223835

추가사항 
manifest파일은 결과적으로 여러 버전의 동일 이름의 dll을 사용하기 위한 한 방법입니다.
가끔 생각하는 거지만 철저한 관리는 좋은 거지만 꽤나 알아야 할게 많게 만드는 혹은 할일을 많이 만드는 피곤한거일수도... 켁~

반응형