2013-05-29 6 views
5

저는 주제에 관해 아주 의문을 가지고 있습니다. 나는 "도구"라고 불리는 폴더에서 다른 .exe로 명령을 보내는 프로그램을 만들었습니다. 나는이 형식으로 보내C++ 컴파일 된 .exe에 외부 .exe를 포함하십시오.

system("tools\\program.exe -r -w file.dat file_new.dat"); 

모든 것은, 그러나, 위대한 작품을 내가 .EXE에 내 프로그램을 빌드 할 때 그것은 분명, 두 번째 폴더에 있어야 다른 실행 파일이 필요합니다. 최종 제품이 하나의 .exe 일 뿐이므로 외부 EXE 파일을 프로젝트에 포함시킬 방법이 있습니까?

Visual Studio 2008 (LOL)을 사용하고 Windows 7 64 비트를 실행하고 있습니다.

감사 :

답변

4

일반적으로 외부 종속성 관리는 설치 프로그램에서 처리합니다. NSIS은 Windows 플랫폼에서 가장 선호하는 솔루션입니다.

대안 : 바이너리를 base64 인코딩으로 변환하고 프로젝트에 헤더 파일로 포함하십시오. 응용 프로그램이 실행되면 exe의 base64 표현을 이진 시퀀스로 변환 한 다음 해당 바이트 시퀀스를 임시 디렉토리 (C : \ windows \ temp 또는 % AppData % \ Local \ Temp)의 파일에 출력합니다. 그런 다음 exe를 실행하십시오. 작업이 끝나면 exe를 제거하십시오.

+0

그래서 설치 프로그램을 만들어야합니까? 나는 그것을 자원이나 무언가로 추가 할 수있는 방법이있는 것처럼 느껴집니다. 나는 누군가에게 하나의 .exe 파일을 보낼 수 있기를 원한다. 나는 또한 사용자가 외부 .exe의 사본을 얻을 수 있기를 원하지 않으며, 이것이 임베드되기를 원하는 이유입니다. – mrg95

+0

아니, 할 필요는 없지만 대안은 훨씬 더 복잡합니다. NSIS는 빠르고 압축 된 단일 exe를 생성합니다. –

+0

사용자가 시스템에 내 프로그램을 "설치"해야합니까? 그렇다면 설치되었을 때 외부 .exe에 액세스 할 수 있습니까? 왜냐하면 그것은 .exe인데, 나는 누군가가 내게서 떠나길 원하지 않는다. – mrg95

1

리소스에 파일을 추가 할 수 있습니다. 명령이 실행되기 전에 두 번째 실행 파일이 있는지 확인할 수 있습니다. 존재하지 않는 경우, 자원에서 데이터를 추출하여 파일에 저장해야합니다. ...

This thread은 자원에서 html을 읽는 것을 다루고 있습니다. 바이너리 파일과 매우 유사합니다.

관련 문제