2014-04-16 2 views
12

디버깅을 위해 OSG 코드를 성공적으로 컴파일하고 실행하기 위해 VS2012에서 내 프로젝트를 설정하려고합니다. 또한 OSG 디버그 라이브러리를 사용하고 있습니다. 편집 및 연결이 성공적으로 끝났지 만 바이너리를 실행 한 후에 MSVCR120D.dll이 없다는 오류가 발생합니다.VS2012 MSVCR120D.dll이 누락되었습니다.

MSVCR110D.dll을 사용해야하는 VS2012를 사용하고 있기 때문에 하루 종일이 오류에 대한 해결책을 찾고 있었지만 이해가되지 않습니다. 나는 또한이 DLL을 가지고 있지 않다. C:\Windows\System32, 단지 MSVCR120.dll과 그 이전 버전이있다.

디버그가 아닌 osg 라이브러리를 사용하여 릴리즈 모드에서 프로젝트를 컴파일하려고하면 오류없이 프로젝트를 정상적으로 실행할 수 있습니다.

나는 MFCRuntime Library 설정으로 게임을하려했지만 릴리스 라이브러리 만 작동합니다.

릴리스 라이브러리에서 작동하지 않는 Visual Leak Detector를 사용하고 싶기 때문에 디버그 라이브러리로 실행해야합니다. 이것은 내가 사용하고있는 코드의 일부입니다 (OSG 라이브러리는 동일한 VS2012로 컴파일됩니다). 그래서, 당신이 VC12 (2013)를 사용하여 컴파일 사용하는 라이브러리의

General settings of project C/C++ Code Generation submenu

+0

잘못된 바이너리를 사용하고 있습니다. ey은 VS2013에서 사용하도록 제작되었습니다. VS2012와 호환되는 것이 필요합니다. –

+0

OSG 라이브러리를 의미합니까? 내가 지금 사용하고있는 것과 동일한 VS2012로 직접 osg 라이브러리를 컴파일했기 때문에 그것은 이상합니다. – Kalam

+0

Noet에서도 VLD가 Release에서 작동합니다. 디버그 모드에서만 작동하는 것으로 제한되어 있다고 생각하지 않습니다. –

답변

10

적어도 하나

#include "stdafx.h" 
#include <windows.h> 

// osg libs 
#include <osgViewer/Viewer> 

int main(int argc, char **argv) { 
    osgViewer::Viewer viewer; 
    while (!viewer.done()) { 
    viewer.frame(); 
    } 
    return 0; 
} 

여기에 오류를 발생시키는 내 프로젝트의 설정의 스크린 샷입니다 다시 컴파일하십시오 (어떤 라이브러리가 Dependency Walker을 사용하여 VC12에서 컴파일되었는지 확인하거나 MSVC 2013 재배포 가능 파일을 설치하십시오) download from here

+3

MSVC2013 MSVCR120D.dll을 추가하지 않고 이름에 "D"가없는 lib 만 추가합니다. 나는 Dependency Walker를 시도 할 것이고 우리는 볼 것이다 ... 그리고 한스에게 슬픈 것처럼 나는 같은 VS2012와 함께 나 자신이 컴파일 한 OSG 라이브러리를 사용하고있다 ... – Kalam

+7

"D"는 디버그 정보를 의미하므로 하나 라이브러리가 VS2013에서 디버깅을 위해 컴파일되어 있어야합니다. –

+0

그래, 알았어. 하지만 정말 이상한데, 내가 같은 VS2012로 나 혼자서 컴파일 한 라이브러리의 유일한 부분 인 질문의 짧은 부분을 컴파일하고 있기 때문입니다. cmake/generated 프로젝트에서 라이브러리를 생성 할 버전을 어떻게 든 변경할 수 있습니까? 구성 단추를 클릭 한 후 Visual Studio 11을 선택하고 프로젝트를 생성 한 다음 디버그 및 릴리스 및 afterall istall 용으로 컴파일합니다. 이 버전은 Visual Studio의 내 버전과 호환되는 프로젝트 라이브러리를 만들어야한다고 생각했습니다. – Kalam