2012-06-05 1 views
2

프로젝트에서 컴파일하는 동안 리소스 연결 프로세스가 다음 오류와 함께 실패합니다. [DCC 오류] E2161 오류 : RLINK32 : 메모리 부족!.RLink32에서 거대한 Res를 연결하는 방법

프로젝트에는 거대한 res 파일 (약 400 Mb)이 포함되어 있습니다. res 파일 크기가 250MB를 초과하지 않으면 오류가 발생하지 않습니다. 일부 RCDATA 만 있어도 데이터를 외부 파일에 보관할 수 있지만이 문제의 해결 방법이 있는지 알고 싶습니다.

+0

오류는 리소스 컴파일러가 거대한 res 파일 (brcc32 또는 micorosft rc)을 생성하는 데 사용한 내용을 추가 함을 유의하십시오. – az01

+0

BeginUpdateResource 등을 시도하십시오. –

+1

사실 저는 그것을 다시 사용합니다. 400MB의 리소스를 실행 파일에 링크하는 것은 나쁜 생각입니다. 매우 큰 용량의 주소 공간을 소비하므로 DLL 재배치와로드 시간이 느려지고 시스템 메모리 사용이 저하됩니다. 올바른 해결책은 별도의 파일입니다. –

답변

2

빌드 후 이벤트 (Project-> Options-> Build Events)에서 외부 리소스 링커를 사용할 수 있습니다. 다음은 'ResHacker'의 사용 예입니다 (GUI에서 수행 할 수있는 명령 줄을 사용하여 거의 모든 작업을 수행 할 수 있습니다).

"C:\...\ResHacker.exe" -addskip "$(OUTPUTPATH)", "$(OUTPUTPATH)", "C:\...\icons.res",,, 

예는 실행 파일에 이미없는 icons.res에 자원을 추가하고 실행 파일을 덮어 씁니다. 나는 당신의 큰 자원으로 질식하는지 잘 모른다. 그러나 만약 그렇다면 다른 대안을 시도해 볼 수있다.

+0

좋아, 나는 "가짜"RCDATA로 컴파일해야하고 빌드 후 실제, 수동 또는 포스트 이벤트로 대체해야한다. 나는 이것이 D.H가 그의 의견에 제안한 바가 아닐까 생각한다. 지금까지 문제를 극복하는 유일한 방법 인 것처럼 보입니다. – az01

+0

@ az01 - 가짜 리소스가 필요하다고 생각하지 않습니다. –