2014-11-25 2 views
2

디버그 어설 션이 실패했습니다!C++ Ogre 런타임 오류 '어설 션 실패'

프로그램 : ... 비주얼 스튜디오 2013 \ ments 프로젝트 \ \ OgreTest \ 디버그 \ OgreTest.exe
파일 : F : \ DD \ vctools \ CRT \ crtw32 \ 기타 \ dbgheap.c
라인 : 1424

표현 : 주장에 _pFirstBlock == pHead 프로그램이 주장을
오류가 발생할 수 있습니다 방법에 대한 자세한 내용은

는 는 비주얼 C++ 설명서를 참조하십시오.

내 오우거 응용 프로그램을 실행하려고 할 때 내가 가진 무엇

(을 눌러 응용 프로그램을 디버그하려면 재시도). 원본은 Ogre Tutorial Framework의 전체 사본입니다. 나는 Ogre.log에서 엄청나게 많은 예외를 발견했다. 모든 오류는 OgreGpuProgramParams.cppOgreResourceGroupManager.cpp에서 발생한 것으로 보입니다. 다음에 오는 사람들 중 일부. 나는 그 모든 것을 붙여 넣을 수 없었습니다. 왜냐하면 약 1000 줄의 쓰레기가 있었기 때문입니다.

17:55:32: OGRE EXCEPTION(6:FileNotFoundException): Cannot locate resource DualQuaternion.cg in resource group Popular or any other group. in ResourceGroupManager::openResource at ..\..\..\..\OgreMain\src\OgreResourceGroupManager.cpp (line 756) 
17:55:32: High-level program Ogre/DualQuaternionHardwareSkinningTwoWeightsCg encountered an error during loading and is thus not supported. 
OGRE EXCEPTION(6:FileNotFoundException): Cannot locate resource DualQuaternion.cg in resource group Popular or any other group. in ResourceGroupManager::openResource at ..\..\..\..\OgreMain\src\OgreResourceGroupManager.cpp (line 756) 
17:55:32: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at ..\..\..\..\OgreMain\src\OgreGpuProgramParams.cpp (line 1709) 
17:55:32: Compiler error: invalid parameters in DualQuaternion.program(14): setting of constant failed 
17:55:32: OGRE EXCEPTION(6:FileNotFoundException): Cannot locate resource DualQuaternion.cg in resource group Popular or any other group. in ResourceGroupManager::openResource at ..\..\..\..\OgreMain\src\OgreResourceGroupManager.cpp (line 756) 
17:55:32: High-level program Ogre/DualQuaternionHardwareSkinningTwoWeightsTwoPhaseCg encountered an error during loading and is thus not supported. 
OGRE EXCEPTION(6:FileNotFoundException): Cannot locate resource DualQuaternion.cg in resource group Popular or any other group. in ResourceGroupManager::openResource at ..\..\..\..\OgreMain\src\OgreResourceGroupManager.cpp (line 756) 
17:55:32: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at ..\..\..\..\OgreMain\src\OgreGpuProgramParams.cpp (line 1709) 
17:55:32: Compiler error: invalid parameters in DualQuaternion.program(28): setting of constant failed 
17:55:32: Parsing script Examples.program 
17:55:32: OGRE EXCEPTION(6:FileNotFoundException): Cannot locate resource Example_Basic.cg in resource group Popular or any other group. in ResourceGroupManager::openResource at ..\..\..\..\OgreMain\src\OgreResourceGroupManager.cpp (line 756) 
17:55:32: High-level program Ogre/BasicVertexPrograms/AmbientOneTextureCg encountered an error during loading and is thus not supported. 
OGRE EXCEPTION(6:FileNotFoundException): Cannot locate resource Example_Basic.cg in resource group Popular or any other group. in ResourceGroupManager::openResource at ..\..\..\..\OgreMain\src\OgreResourceGroupManager.cpp (line 756) 
17:55:32: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at ..\..\..\..\OgreMain\src\OgreGpuProgramParams.cpp (line 1709) 
17:55:32: Compiler error: invalid parameters in Examples.program(16): setting of constant failed 
17:55:32: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at ..\..\..\..\OgreMain\src\OgreGpuProgramParams.cpp (line 1709) 
17:55:32: Compiler error: invalid parameters in Examples.program(17): setting of constant failed 
17:55:32: OGRE EXCEPTION(6:FileNotFoundException): Cannot locate resource Example_Basic.cg in resource group Popular or any other group. in ResourceGroupManager::openResource at ..\..\..\..\OgreMain\src\OgreResourceGroupManager.cpp (line 756) 
17:55:32: High-level program Ogre/HardwareSkinningFourWeights encountered an error during loading and is thus not supported. 
OGRE EXCEPTION(6:FileNotFoundException): Cannot locate resource Example_Basic.cg in resource group Popular or any other group. in ResourceGroupManager::openResource at ..\..\..\..\OgreMain\src\OgreResourceGroupManager.cpp (line 756) 
17:55:32: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at ..\..\..\..\OgreMain\src\OgreGpuProgramParams.cpp (line 1709) 
17:55:32: Compiler error: invalid parameters in Examples.program(314): setting of constant failed 
17:55:32: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at ..\..\..\..\OgreMain\src\OgreGpuProgramParams.cpp (line 1709) 
17:55:32: Compiler error: invalid parameters in Examples.program(315): setting of constant failed 
17:55:32: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at ..\..\..\..\OgreMain\src\OgreGpuProgramParams.cpp (line 1709) 
17:55:32: Compiler error: invalid parameters in Examples.program(316): setting of constant failed 
17:55:32: OGRE EXCEPTION(2:InvalidParametersException): Named constants have not been initialised, perhaps a compile error. in GpuProgramParameters::_findNamedConstantDefinition at ..\..\..\..\OgreMain\src\OgreGpuProgramParams.cpp (line 1709) 

OpenGL 또는 D3D9 렌더링 시스템을 사용하는 경우에만 오류가 발생합니다. D3D11 사용시 런타임 에러 다르다 :

오우거 EXCEPTION (3 RenderingAPIException) D3D11에는 고정 파이프가없는 두 버텍스와 단편 쉐이더 않고 D3D11 장치에 렌더링 Attemped - 사용 RTSS 또는 커스텀 셰이더를 작성하십시오. D3D11RenderSystem에 :: _ .......... 로 렌더링 \ RenderSystems \에서는 Direct3D \ SRC \ OgreD3D11RenderSystem.cpp (라인 2496)

내가 붙여 넣을 수 있습니다 더 많은 정보가 필요입니다입니다. 아무도 해결책을 안다면?

+0

문제를 일으킨 코딩 줄을 모른 채 추측하기가 어렵습니다. 디버거가 충돌에 관해 당신에게 무엇을 말합니까?Ogre 버전에주의를 기울였습니까? –

+0

@PhilipAllgaier 충돌은'mRoot-> startRendering()'에서 유래합니다. 내 오우거 버전은 1.9.0입니다. –

+0

위와 동일한 문제가 있지만 VS 2015를 사용합니다. ( – Irrmich

답변

0

이 오류는 일반적으로 릴리스 및 디버그 빌드를 혼합 할 때 나타납니다. 대부분의 경우 응용 프로그램은 Ogre의 경우 디버그 빌드 DLL을 사용하려고하는 동안 릴리스 모드로 작성되었습니다.

Dependency Walker과 같은 도구를 사용하여 응용 프로그램 실행 중에 정확히 어떤 DLL이로드되었는지 확인할 수 있습니다.

또 다른 이유는 Ogre DLL이 실제 응용 프로그램과 다른 IDE/컴파일러 버전에서 생성 된 것일 수 있습니다. 이렇게하면 종종 바이너리와 호환되지 않아 충돌이 발생합니다. 이는 표준 라이브러리와 관련 동적 할당 문제의 버전이 다르기 때문에 발생할 수 있습니다. Ogre 라이브러리를 '정적'으로 빌드하지만 동적 종속성 (예 : OIS, 플러그인 등)을 사용하는 경우에도 마찬가지입니다.

로그의 오류 : 로그 항목의 원인이되는 일부 미디어 파일 (예 : 쉐이더)이 누락 된 것으로 보입니다.

D3D11 관련 : 해당 버전에서 Microsoft는 FFP (고정 기능 파이프 라인)를 제거했습니다. 이제는 모든 것이 쉐이더를 기반으로합니다. 즉, 직접 작성하거나 제공해야하거나 Ogre의 통합 쉐이더 생성기 (RTTS)를 사용해야합니다.

+0

내가 추천 한 도구로 내 exe를 검사했는데 내 프로그램에서 다음과 같은 DLL을 사용한다고합니다. OgreMain_d.dll, OgreOverlay_d.dll, OIS_d.dll, user32.dll , MSVCP120D.dll, boost_system-vc120-mt-gd-1_55.dll, MSVCR120D.dll 및 kernel32.dll 등이 있습니다. 그래서 모두 모두 디버그 dll입니까? 그렇습니다. 내 프로그램은 디버그 빌드입니다. –

+0

@ user3725053 컴파일러 버전 관련 메모를 추가했습니다. –