특정 CRT 버전을 사용하기 위해 C ++ 컴파일러를 시행하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/730134

문제

기본적으로 CRT 버전 9를 사용하는 COM DLL을 개발하는 데 VS2008을 사용하고 있지만 새로운 CRT와 호환되지 않는 TSF (Text Service Framework)를 사용하고 있습니다. 솔루션은 호환 가능한 솔루션을 사용하여 CRT 버전을 어떻게 지정할 수 있습니까?

도움이 되었습니까?

해결책

나는 추천에 진심으로 합류합니다 ~ 아니다 링크 된 CRT 버전을 수동으로 변경하려면 그러나 어떤 이유로 든 (내가 상상할 수없는) 이것은 당신을위한 올바른 행동 과정입니다. 그렇게하는 방법은 명백한 프로젝트를 위해.

먼저 매니페스트가 있는지 확인하십시오 ~ 아니다 수동 변경 사항을 덮어 쓰기 때문에 모든 빌드 (vs2005 : 구성 속성/링커/매니페스트 파일/생성)에서 생성됩니다. 또한 격리가 활성화되어 있는지 확인하십시오. 다음으로, 매니페스트 파일을 찾으십시오 - $ (intdir) (예 : 디버그)에 있어야합니다. 당신은 다음과 비슷한 섹션을 볼 수 있습니다.

  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>

(물론 디버그 빌드의 경우). CRT 요소의 버전 및 publicKeyToken 속성을 편집해야합니다. 로컬 Windows Winsxs 폴더의 파일을 검사하여 사용 가능한 버전을 확인할 수 있습니다. 확인하다 여기 원하는 버전을 찾으면 PublicKeyToken을 추출하는 방법. (먼저 원하는 CRT 버전과 연결되어 다른 프로젝트의 매니페스트를 직접 살펴 보았습니다).

거기에 가면 거친 물을 기대하십시오. 애플리케이션이 다른 사이드 구성 요소 (MFC, OpenMP 등)와 연결되지 않는 콘솔 앱이라면 운이있을 수 있습니다. 응용 프로그램이 사소한 경우 SXS 구성 요소에 복잡한 버전 종속성이 없으면 놀랄 것입니다.

(편집) 또한 사용중인 특정 CRT를 응용 프로그램과 함께 배포해야합니다. 여기에 있습니다 누구 누가 그랬어.

다른 팁

가장 쉬운 방법은 TFS와 호환되는 CRT를 사용하는 VC ++ 버전으로 DLL을 구축하는 것입니다.

동일한 버전의 헤더 파일을 사용하지 않는 한 DLL을 다른 버전의 CRT와 연결하는 것이 좋습니다. 그리고 가장 쉬운 방법은 올바른 VC ++ 버전을 사용하는 것입니다 ...

여전히 시도하고 싶다면 다음과 같습니다.

  • "구성 설정-> 링커-> 입력-> 특정 라이브러리를 무시하고 사용중인 CRT (libc.lib, libcmt.lib 등을 입력하십시오. 코드 프로젝트 기사 자세한 내용은).
  • "구성 설정-> 링커-> 입력-> 추가 종속성"및 "구성 설정-> 링커-> 추가 라이브러리 디렉토리"에서 사용하려는 CRT 버전의 이름을 입력하십시오.

"도구-> 옵션-> 프로젝트 및 솔루션-> VC ++ 디렉토리-> 라이브러리 파일"에서 기본 디렉토리를 변경할 수도 있습니다. 아마도 $ (vcinstalldir) lib를 다른 버전의 CRT 거주지로 변경하면 트릭을 수행 할 수 있습니다.

vs9를 사용하려고하지 말고 다른 버전의 CRT에 링크하십시오.

vs8의 CRT와 같은 다른 CRT에 링크하려면 앱이 필요한 경우 해당 버전의 vs에서 앱을 컴파일하고 연결해야합니다.

이 솔루션은 Visual Studio Express 2013 X64 + OpenCV 2.4.9 x64 컴파일, 디버그 (LV2013 X64에서 통합)에서 저를 위해 작동했지만 다른 vs version에서 작동해야합니다.

1) 솔루션> 속성> 디버그 소스 파일을 마우스 오른쪽 버튼으로 클릭하십시오 ...

2) 두 가지 Entires가있을 수 있습니다 (VS-Install-Directory에 따라) ... C : Program Files (X86) Microsoft Visual Studio 12.0 Common7 IDE VC7 ATLMFC C : Program Files (X86) Microsoft Visual Studio 12.0 Common7 IDE VC7 CRT

이를 통해 Visual Studio 2013 Express에서 작동하지만 다른 2013 년에도 작동해야합니다. Visual Studio 10 또는 11이있는 경우 각각 "Microsoft Visual Studio 11.0"또는 10.0을 입력하십시오. 당신은 또한 그것들을 추가 할 수 있습니다.

Solution> Properties> Debug 소스 파일 (위에서 설명한대로)에서 OpenCV.Sln에서 얻을 수있는이 항목. 그리고 이미 명시한대로 : CRT는 일치해야합니다 ... 그리고 이것은 그 장소에서 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top