2010-05-10 1 views
-2

나는 기본적인 Win32 API만을 사용하는 C++ 응용 프로그램을 가지고 있으며 (필요한 경우 제거 할 수도 있음) C++ STL을 사용합니다. 나는 MSVC를 사용하고 있으며 실제로는 독립형이되기를 원합니다. 나는 이미 "Multithreaded DLL"대신 "Multithreaded"옵션을 사용하는 등 여러 가지 옵션을 시도했다.MSVC 2010을 사용하여 Windows XP 용 실제 독립 실행 형 응용 프로그램 만들기

아직 : 내 학교의 컴퓨터를 포함하여 많은 컴퓨터에서 여러 개의 MSVC 런타임 DLL이 누락되었습니다.

  • 어떻게 윈도우 XP (낮은/가능하다면 그 이상) 서비스 팩 및 런타임 DLL을 만 avaiable이다 특정 DLL 버전을 필요없이 설치에서 실행 할 수있는 C++ 응용 프로그램을 만들 수 있습니까?

G ++로 전환해야합니까?

내 요구 사항은 그리 크지 않다. 여기에 몇 개의 루프와 일부 ifs가 포함 된 작은 실행 파일, 크기가 35KB.

+1

정확하게 누락 된 DLL을 지정하십시오. 정확한 철자가 중요합니다. 당신이 디버그 빌드를 배포하려고한다면. – ravenspoint

+0

@ravenspoint : 최신 Microsoft C++ 런타임 패키지와 함께 제공되는 것들. 이름 목록이 어떻게 도움이 될지 모르겠다. 일부 파일을 system32에 복사하는 것만 큼 간단하지 않다. –

+3

@ 내 이름은 여기에있다. 이름 목록이 어떻게 도움이 될지 모르지만, 목록에 대해 * 묻는 사람들이 알고있을 순간? 당신이 도움을 청하기 때문에 다른 사람들이 알고있는 것에 의지해야합니다. 따라서 정보를 요청할 때 도움이 될 정보가 필요할 수 있다는 가정하에 시작할 수 있습니다. – jalf

답변

3

사용하는 모든 라이브러리에 정적 링크를 사용하는 경우에는 DLL이 필요 없습니다. MFC 또는 ATL DLL 등을 사용하고 있지 않습니까? 런타임 라이브러리를 'multithreaded DLL'대신 'multithreaded'로 설정하면 CRT의 트릭을 수행하고 MSVCRT DLL에 대한 종속성을 제거해야합니다. "표준 윈도우 헤더 사용"과 같은 일반적인 속성에도 비슷한 설정이 있어야합니다.

Visual Studio 2010을 사용하는 경우 CRT에 Windows XP SP2 이상이 필요합니다 (RTM 또는 SP1이 작동하지 않음). XP SP2 이전에 대상을 지정해야하는 경우 Visual Studio 2008로 되돌아 가야합니다.

4

글쎄, 변경해야 할 옵션을 이미 발견했습니다. 솔루션 탐색기 창에서 속성, C/C++, 코드 생성, 런타임 라이브러리 =/MTd에서 프로젝트를 마우스 오른쪽 단추로 클릭하십시오. 결과 EXE는 kernel32.dll, Windows에만 종속됩니다.

릴리스 빌드 구성에도이 작업을 수행해야합니다. 이제/MT를 선택하십시오.

+0

자기 인용 : * "Multithreaded DLL"대신 "Multithreaded"옵션 사용과 같은 여러 옵션을 이미 시도했습니다. * 즉, 시도했지만 결과를 "독립 실행 형"으로 만들지 않았습니다. –

+0

자기 인용 : * 릴리스 빌드 구성 * –

+3

의 이름이 여기에 오는 것을 잊지 마십시오. 그 다음에는 잘못된 것이 있습니다. 우리가 말할 수있는 것은별로 없습니다. @Hans는 런타임 dll에 대한 종속성을 제거하는 설정을 말했습니다. 여전히 dll에 종속성이 있다면, 당신은 잘못된 것을했습니다.평일에는 심령 디버깅 기술을 유지하지 않으므로 실제로 수행중인 작업에 대한 정보를 실제로 제공해야합니다. – jalf

관련 문제