2010-11-28 4 views
3

wxWidgets을 UI 프레임 워크로 사용하고 Windows 7 컴퓨터에서 Visual Studio 2010을 사용하여 컴파일 한 응용 프로그램이 있습니다. 나는 wxWidgets를 정적으로 연결하고있다. 내 응용 프로그램은 처리를 위해 C DLL도 사용합니다.C++을 사용하여 개발 한 응용 프로그램 배포

이제 새로 설치 한 다른 컴퓨터 (Win7)에서이 응용 프로그램을 실행하려고합니다. 여기에는 개발자 환경 설정이 없습니다. dll 및 기타 지원 텍스트 파일을이 컴퓨터에 지원하는 응용 프로그램의 실행 파일을 복사했습니다.

응용 프로그램이 시작되면 다음과 같은 메시지가 나타납니다.

The program failed to start because MSVCR100d.DLL is missing from your computer. Try reinstalling the program to fix this problem.

내 C 라이브러리가 디버그 버전을 사용하고 있었고 컴파일하여 Release 모드에서 문제가 해결되었다고 생각했습니다. 그러나 그것은 여전히 ​​MSVCR100.dll을 요구합니다. 해결 방법은 VC++ 재배포 가능 패키지를 설치하는 것입니다. 그러나 그것이 최선의 접근법인지 확신 할 수 없습니다.

내 질문 사항은 다음과 같습니다.

  1. 일반적으로 응용 프로그램을 어떻게 배포합니까? VC++ 재배포 가능 패키지도 제공합니까?
  2. 64 비트 시스템에서 이것을 컴파일하고 32 비트로 테스트하고 있습니다. 이거 괜찮아? 아니면 32 비트 용으로 별도로 컴파일해야합니까?
  3. 런타임 라이브러리에 대해 정적으로 링크 할 수 있습니까? 그래서 난 내 DLL과 다른 파일을 보낼 수 있습니다.
  4. 많은 컴퓨터에서 실행되는 실행 파일을 빌드 할 때 알아야 할 다른 일반적인 사항은 무엇입니까?

다음은 관련이있는 일부 설정입니다.

General : 
    Use of MFC : Use standard windows libraries 
    Use of ATL : Not using 

C/C++ : 
    Runtime library : Multi-threaded(/MT) 

어떤 도움을 주시면 감사하겠습니다.

답변

2

디버그 전용 DLL을 가지고 있지 않은 컴퓨터에서 DLL을 사용하려고합니다.

msvcr100d.dll이 후행 d로 표시된 디버그 전용 DLL이라는 사실 때문에 문제가 발생합니다.

따라서/MDd를 실제로 사용하고있는/MT를 사용하고 있지 않습니다./MT를 사용했다면 그 DLL을로드하려고 시도 할 것입니다 ...질문에 대한 대답 그래서

:

  1. 내가 선호하는 정적으로 런타임에 연결합니다.
  2. 그게 정말로 문제는 아닙니다. 32 비트 OS에서 64 비트 컴파일 바이너리를 실행하지 마십시오.
  3. 예.
  4. 최소 사양에주의하십시오. 당신은 펜티엄 3를 지원해야하는 경우 즉
+0

감사합니다. 또한 MinGW에서 MS 컴파일러를 피하고 GCC를 사용하는 방법에 대해서도 읽었습니다. 그것에 대해 의견이 있으십니까? –

+0

@Appu : MSVC 컴파일러는 꽤 멋졌습니다. 변경할 필요가 거의 없거나 없습니다. – Puppy

+0

@Appu : DeadMG에 동의합니다. 주목할 가치가 있습니다. GCC를 사용하면 Visual Studio를 통해 여러 번 쉽게 삶을 찾을 수 있습니다. 나는 어느 쪽이든을 행복하게 취급 할 것이다 그러나 나는 오히려 다만 개발자 스튜디오를 취급한다 : – Goz

0

이것은 "x64에서 x64로 작동 할 것인가?"라고했을 때 두 번째 히트와 같은 질문입니다. 모든 것을 대답하지는 않지만 몇 가지 대답이 있습니다. 당신이 두 번째 넘어 보면

http://social.msdn.microsoft.com/Forums/en/netfx64bit/thread/5ad0ff2c-558c-43ba-a59d-9cd0a0785103

당신은 아마 더 유사한 정보를 찾을 수 있습니다, 당신은 몇 가지 다른 것들에 대한 질의합니다.

VC++ 런타임에 대해서는 전염병과 같은 MS의 C++ 버전을 피하고 이에 대한 경험이 없지만 모든 현대 Windows 컴퓨터는 모든 필수 구성 요소의 런타임 구성 요소가 있어야한다고 생각했습니다. VC++, .NET 등)이 이미 포함되어 있습니다.

+0

Windows 용 C 및/또는 C++에서 프로그래밍 할 때 MS의 런타임 버전을 피할 수 있습니까? – rubenvb

+0

Windows 용으로 만 개발하지는 않습니다. 게다가, 당신이 VC++ 런타임이 필요하다는 것을 의미하는 것은 아닙니다. x86 명령어는 어떤 OS에서 실행 중인지 상관하지 않습니다. VC++ 런타임은 Windows 시스템 라이브러리와 동의어입니까? 그냥 windows.h를 포함하고 Sleep()을 사용하기 때문에 VC++ 런타임이 필요합니까? 그런 다음 WinAPI를 사용하여 GUI 창을 설정하면 VC++가 필요합니까? 나는 생각하지 않을 것이다.하지만 MS는 몇 가지를 OS/쉘 작업으로 통합해서는 안되기 때문에 아마도 VC++ 런타임은 실제로 Windows 시스템 호출과 동의어이다. – Loduwijk

+0

댓글이 너무 짧습니다. 일반적으로 나는 이것을 좋아하지 않지만, 첫 번째 문자가 다 떨어지기 때문에 두 번째로 유혈하는 것이 유익하다고 느낍니다. VC++을 사용하여 응용 프로그램을 만들면 당연히 런타임이 필요합니다. 또한 VC++을 Windows 용 C++로 개발할 때도 사용하지 않습니다. 나는 MinGW를 사용한다. 그러나 다시 한번이 질문은 중요합니다. 아마도 VC++ 런타임에 응용 프로그램에 필요한 것은 정확히 무엇입니까? 모든 Windows 관련 작업 (WinAPI f.ex. Sleep(), CreateWindow() 등)이 필요합니까 아니면 그냥 지원합니까? – Loduwijk

-1
  1. 네, VC++ 재배포 가능 패키지를 제공 할 필요가 등 ... SSE4를 사용하지 마십시오. 가장 좋은 방법은 Visual Studio Setaul 및 Deployment 프로젝트를 사용하여 설치 패키지를 만드는 것입니다.

  2. 32 비트 실행 파일을 컴파일해도 문제가 없습니다.

  3. 거대한 실행 파일은 전문적으로 보이지 않습니다. 권장하지 않습니다.

+0

TBH 그들은 그 거대한 끝내지 않는다. 링크 스트리퍼는 많은 삐걱 거리는 소리를 제거합니다. 사람들에게 vcredist 설치 프로그램 패키지를 보내야하는 것보다 훨씬 작은 재 배포가 가능합니다. – Goz

+1

"거대한"실행 파일을 전문가가 아닌 것으로 간주했던 마지막 시간을 기억하지 못합니다. 몇 분, 실행 파일의 파일 크기를 마지막으로 확인한 시간을 기억할 수 없습니다 ... –