파일을 프로그램에 임베드하고 싶습니다. 제공되지 않는 경우 기본 구성 파일에 사용됩니다. 나는 단지 기본값을 사용할 수 있다는 것을 깨달았지만 파일을 추출하여 디스크에 저장하여 수정할 수 있도록하려고합니다.프로그램에 파일 임베드
답변
임베딩함으로써 파일없이 프로그램을 배포한다는 의미입니까?
그런 다음 빌드 도구 모음의 구성 초기화 코드로 변환 할 수 있습니다. makefile 단계 (또는 사용중인 도구) -이 .cfg 파일을 구성 데이터 구조를 초기화하는 일부 C++ 코드 파일로 변환하는 스크립트를 추가하십시오. 그렇게하면 .cfg 파일을 수정하고 프로젝트를 다시 빌드 한 다음 새 값을 내부에 반영 할 수 있습니다.
그런데 Windows에서는 resource file에 데이터를 삽입 할 수 있습니다.
제가 정말로하려고하는 것은 내 프로그램에서 유효한 파일 (예 : .png 파일)을 엔진에서 생성 할 수있게하십시오. 그런 다음 zip 파일과 같은 종류의 디스크에 이러한 파일을 생성 할 수 있기를 원합니다. – Jeff
임베디드 데이터는 종종 "리소스"라고합니다. C++은 기본 지원을 제공하지 않지만 거의 모든 실행 파일 형식으로 관리 할 수 있습니다. C++ 용 리소스 관리자를 찾으십시오.
당신이 할 수있는 흔한 것은 정적 바이트의 배열로 파일 데이터를 표현하는 것입니다
그런 다음// In a header file:
extern const char file_data[];
extern const size_t file_data_size;
// In a source file:
const char file_data[] = {0x41, 0x42, ... }; // etc.
const size_t file_data_size = sizeof(file_data);
파일 데이터는 당신이 참조 할 수있는 실행 파일로 컴파일 된 바이트의 전역 배열 될 것입니다 어딘가에. 원시 바이트 배열을 처리 할 수 있도록 파일 처리 코드를 다시 작성하거나 fmemopen(3)
과 같은 것을 사용하여 데이터에서 의사 파일 핸들을 열고이를 파일 처리 코드로 전달해야합니다.
물론이 형식으로 데이터를 가져 오려면 파일을 컴파일러가 수락 할 수있는 바이트 배열로 변환하기 위해 몇 가지 사전 처리 단계를 사용해야합니다. makefile이 좋을 것이다.
당신에게 중복이 발견되었습니다 : http://stackoverflow.com/questions/1074362/embedded-resource-in-c C++의 다른 컨텍스트에서 "리소스"와 "관리"를 사용하기 때문에 검색이 어려워집니다. 하지만 난 리눅스와 맥 질문을 본 것 같아요 ... – dmckee
linux dup : http://stackoverflow.com/questions/72616/embed-data-in-ac-program (초기 시퀀스 번호도) – dmckee
당신은 완전히 그것을 스스로하고 싶어합니다. 이것은 도서관 및/또는 운영 체제에 특정한 것입니다. 당신이 그것을하고 싶은 환경을 추가하십시오. –