2011-04-13 4 views
0

C++ DLL을 사용하는 C# 응용 프로그램을 만들었고이 패키지가 VS가 있는지 여부에 관계없이 다른 컴퓨터에서 실행되도록 허용 할 설치 패키지를 만들려고합니다. 문제는 C++ 라이브러리에 무엇이 필요한지 모르겠습니다. 그것을하게하십시오. 빈 가상 컴퓨터에서 응용 프로그램을 실행할 때 "xxxx에 문제가있어서 프로그램을 종료해야합니다."라고 표시됩니다. Visual Studio 2008 익스프레스 버전을 다운로드하여 컴퓨터에 설치하면 내 프로그램이 정상적으로 실행됩니다. 문제는 익스프레스는 85-185mb 다운로드 및 335mb 최대 1.1gb 기계에 설치하는 것입니다, 그것을 사용하는 프로그램은 단지 33kb입니다. 거기에 거대한 오버 헤드가 ... msdn 사이트에서 C++ 재배포 가능 패키지를 설치하면 4MB를 차지하지만 내 프로그램을 실행시키지 않습니다.프로그램을 실행하는 데 필요한 C++ 패키지는 무엇입니까?

이 프로그램을 숨겨진 컴퓨터에서 실행하려면 C++의 어떤 패키지가 필요합니까?

+0

에 내가 볼 수 있습니다. 의존성 워커가 있고, 실행할 때마다 누락 된 새 dll을 지정합니다. 지금까지 자사의 listingMSVCRT.dll MPR.dll 및 IESHIMS.dll. IESHIMS는 IE8 dll이고 내 프로그램은 그것을 사용하지 않는다. 그래서 왜 그것에 의존하는지 모른다. 편집 : WER.dll – caleb

+0

문제는 디버그 모드에서 dll이었다. 릴리스에서 그것을 다시 빌드하고 모든 라이브러리를 준 지금은 실행됩니다 – caleb

답변

1

그 질문은 대답하기가 어려울 수 있습니다. C++ dll의 소스가있는 경우 사용자가 많은 com 또는 라이브러리 호출을 사용하지 않는 한 해당 종속성을 볼 수 있어야합니다. C++ depencany 정보를 얻는데 사용 된 가장 좋은 도구 중 하나는 depends.exe입니다. 디버그 버전에 의존성이있는 디버그 버전을 재배포 가능 파일에 사용하지 않는 것이 코드인지 확인해야합니다.

+0

나는 dll 소스 코드와 실행중인 디버그 모드가 있습니다. 내가 릴리스 모드에서 빌드하면 그 라이브러리 나 .h 파일이 동일한 디렉토리에 있더라도 찾을 수 없습니다. – caleb

0

caleb 나는 Dependency Walker이라는 프로그램을 권장합니다. 당신이 가지고있는 모든 dll 의존성을 보여줄 것입니다. Windows 용으로는 그보다 훨씬 더 많은 기능이있을 것이라고 확신하지만, 꽤 오랫동안 사용 해왔다. 따라서 MS 웹 사이트에서 재배포 가능 패키지를 다운로드하면 올바르게 작동하지만 앱은 아마도 다른 라이브러리에 의존 할 것입니다. 오랫동안 Visual Studio를 사용하여 설치 프로그램을 만들려고했지만 설치 프로그램에 재배포 가능 패키지를 포함 시키거나 side-by-side 설치를 사용하는 방법을 기억했습니다. Visual Studio 버전의 사용권 계약에 따라 그 또는 아닙니다. 또한 설치 프로그램에있는 모든 dll 종속성을 포함 할 수 있습니다.

+0

종속성 워커가 있고 실행할 때마다 새 DLL이 지정됩니다. 지금까지 자사의 listingMSVCRT.dll MPR.dll 및 IESHIMS.dll. IESHIMS는 IE8 dll이고 내 프로그램은 doesnt가 ​​그것을 사용하는 이유를 알고 있습니다. 왜 그런지 모르겠습니다. EDIT : WER.dll – caleb

+0

때때로 * other * dll은 직접적으로 사용할 수없는 DLL에 의존하기 때문입니다. 예를 들어, 가끔은 OpenGL 라이브러리 의존성을 찾았지만 전혀 사용하지 않았습니다. 종속성 워커 (Dependency Walker)는 dll의 종속성을 보여줄 수 있습니다. 또한 실제로 실수로 사용하지 않는 라이브러리와 앱을 연결하는 경우가있을 수 있습니다. 예를 들어 프로젝트를 만든 마법사가 여기에 넣어 두었습니다. – Barbaris

0

당신이 재배포 가능 패키지 정확히 이것으로 컴파일러와 함께 제공되는 것들입니다 필요로하는 C++ 런타임 DLL을하는 데 도움이

희망! 정확한 버전이 필요한 실행 파일에 포함 된 매니페스트 때문에 다른 재배포 패키지가 필요하지 않습니다 (side-by-side 어셈블리 디렉토리 C : \ Windows \ SxS의 바이너리 해시 값으로 확인)

재배포 가능함이 맞지만 컴파일러를 설치 한 사람이 인터넷에서 가장 추측 할 수있는 사람이 아니어야합니다. 정확한 버전은 매니 페스트 파일 (XML)

관련 문제