2016-09-15 2 views
-1

Windows 7 용 Visual Studio 2015에서 OpenGl을 사용하여 C++ 프로그램을 작성했습니다. "디버그"대신 "릴리스"를 사용하여 코드를 컴파일했습니다. 이 프로그램은 내 컴퓨터에서 제대로 작동하지만 다른 컴퓨터로 이동할 때 프로그램이 실패합니다.Visual Studio에서 특정 .dll 파일에 연결 하시겠습니까?

컴퓨터에 MSVCP140D.dll이 없기 때문에 프로그램을 시작할 수 없습니다. 이 문제를 해결하려면 프로그램을 다시 설치하십시오.

제 프로그램이 다른 컴퓨터에서 작동하여 최신 드라이버 나 라이브러리를 설치하지 않아도 작동하기를 바랍니다. 첫 번째 컴퓨터에는 MSVCP140D.dll이 있지만 다른 컴퓨터에는 MSVCP120.dll 만 있습니다. MSVCP140D.dll을 필요로하지 않고 대신 MSVCP120.dll을 사용할 수 있도록 코드를 컴파일하려면 어떻게해야합니까?

+0

* D.dll은 디버그 DLL이므로 릴리스 설정이 잘못되었습니다. –

+0

왜 MSVCP120.DLL과 함께 사용 하시겠습니까? 실행중인 Visual Studio의 버전에 관계없이 적절한 DLL을 제공해야합니다. MSVC 2015에서 * 140.DLL 또는 * MSVC 2013에서 * 120.DLL 여부에 관계없이 이러한 DLL의 모든 버전을 사용할 수 있다고 기대할 수 없습니다. 또는 shrike가 말한 것처럼 정적으로 링크합니다. – Hieronymus

답변

2

먼저 빌드 빌드 설정이 올바른지 확인하십시오. MSVCP140D.dll은 Visual Studio 2015 런타임의 디버그 DLL입니다. 이 라이브러리의 릴리스 버전은 MSVCP140.dll입니다.

이 문제를 해결하면 프로그램을 실행할 대상 컴퓨터에 Visual C++ Redistributable for Visual Studio 2015을 설치할 수 있습니다. 누락 된 라이브러리가 설치됩니다. VC++ 재배포 가능 파일은 디버그 라이브러리 (MSVCP140D.dll)가 아닌 릴리스 코드 (MSVCP140.dll)를 설치합니다.

또 다른 옵션은 Visual C++ 런타임에 정적 링크로 프로그램을 다시 작성하는 것입니다. 프로젝트 속성 대화 상자를 열고 "구성 속성 -> C/C++ -> 코드 생성"필드에서 "런타임 라이브러리"를 선택하고 "다중 스레드 (/ MT)"를 선택하십시오. 이렇게하면 대상 컴퓨터에 VC++ 재배포 가능 패키지를 설치할 필요가 없습니다.

+0

다른 사람들을 위해 - 또한 VC 2015에서 VC 2013으로 내 라이브러리를 전환했는지 확인해야했습니다.이 작업을 수행 할 때까지이 단계를 수행해도 문제가 해결되지 않았습니다. –

1

MSVCP .dll (MSVC 2015를 계속 사용할 수 있지만 2013을 도구 체인으로 선택할 수 있음)과 연결할 수 있도록하려면 Visual Studio 2013을 설치해야합니다. MSVC 2013이 설치되면 프로젝트 설정 -> 플랫폼 도구 세트에서 MSVC 2013을 선택할 수 있습니다.

또는 응용 프로그램을 정적으로 연결하십시오 (코드 생성 설정에서 /MD에서 /MT으로 변경). 그렇다면 앱은 실행할 MSVC DLL이 필요 없습니다 (그러나 더 커질 것입니다).

다른 컴퓨터에 VC 2015 Redistributable package을 설치하십시오.

+0

어디에서 2013을 선택합니까? 툴체인이라고 했니? 그게 어디 있니? –

+1

MSVC 2013이 설치되면 프로젝트 설정 -> 플랫폼 도구 세트에서 MSVC 2013을 선택할 수 있습니다. – rustyx

+0

또한/MT로 변경하면 컴파일 할 때 많은 오류가 발생합니다. 난/MD –

관련 문제