2009-12-06 2 views
3

VC + 2008을 사용하여 작은 게임 프로젝트를 꾸며 보았습니다. 포함 된 라이브러리로 SDL, OpenGL, Boost 및 Box2D를 사용하고 있습니다. 그것은 내 윈도우 7 컴퓨터뿐만 아니라 친구의 w7 컴퓨터에서 잘 작동합니다. 어떻게 두 번째 친구의 XP sp3 컴퓨터에서 vC++ 2008 SP1 재배포 팩이 설치 되어도 작동하지 않습니다. 그는 .EXE를 시작하면 그는의에게 오류가 발생합니다 : 내가 읽은프로 시저 엔트리 포인트 _ftol2를 동적 링크 라이브러리 msvcrt.dll에 위치시킬 수 없습니다.

"The procedure entry point _ftol2 could not be located in the dynamic link library msvcrt.dll"

대부분의 포럼 스레드는 MSVCRT.DLL이 손상되었거나 오래된 것을 제안합니다. msvcrt.dll의 나의 버전은 7.0.7600.1385이고 그의 버전은 7.0.2600.5512입니다. 재부팅시 이전 버전으로 되돌려지기 때문에 간단히 대체 할 수는 없으며 내 msvcrt.dll을 게임 폴더에 포함시키는 것만으로는 도움이되지 않습니다. gamedev.net의 this 스레드에 따르면 OpenGL32.dll은 _ftol2를 호출합니다. 그들의 결론은 이미 언급 한 vC++ 2008 redist 팩을 설치하는 것입니다.

이 오류에 대한 해결책을 밝힐 수있는 아이디어가 있습니까?

편집 :Dependency Walker를 사용하여 나는 OPENGL32.DLL과 GLU32.dll 참의 MSVCRT.dll의 _ftol2 전화 않습니다 안심하시기 바랍니다. 이 종속성을 어떻게 피할 수 있습니까?

답변

1

게임과 함께 내 시스템에서 opengl32.dll을 포함해서는 안됩니다. XP의 opengl32.dll은 이전 버전이며 XP의 MSVCRT.dll과 올바르게 연결되어 있습니다. 내가 윈도우 7 opengl32.dll을 포함 시켰을 때 그것은 단순히 xp dll과 일치하지 않았다. 내 게임 폴더에서 opengl32.dll 및 glu32.dll을 제거하면 문제가 해결되어 게임이 올바르게 작동합니다.

+0

폴더에서 파일을 삭제 한 후 응용 프로그램이 열리지 만 렌더링 중에 결함이 있습니다. 그것을 고칠 방법이 있습니까? –

1

MSVCRT.DLL을 참조하는 대상을 결정해야합니다. 아무것도해야합니다 - 이것은 CRT의 Windows 버전입니다. 응용 프로그램이 MSVCRT90.DLL에 연결되어야합니다.

+1

연결된 스레드에 따르면 OpenGL32.dll은 MSVCRT.dll을 호출합니다. 내가 포함 된 라이브러리가 무엇을 가리키는 지 어떻게 결정할 수 있습니까?이 참조를 어떻게 바꿀 수 있습니까? – Zoomulator

3

비슷한 이상한 메시지 "strncpy_s could not be located in the dynamic link library msvcrt.dll"가있어 해결책을 찾았습니다. 필자의 경우 VS 2005로 설치 프로젝트를 만들 때 MAPI32.dll이 추가되었습니다. 그래서 설치가 WIN 7 64에서 이루어졌고 XP 32에서 작동하지 않았습니다 (WIN 7에서 사용 된 올바른 MAPI32.dll이긴하지만). 프로젝트에서 제외되거나 대상 폴더에서 수동으로 삭제 된 후 모두 정상적으로 작동합니다.

+0

MAPI32.dll을 프로젝트에서 어떻게 제외합니까? –

+0

설치 프로젝트에 MAPI32.dll을 마우스 오른쪽 단추로 클릭하고 제외를 선택하십시오. – parzival

관련 문제