2010-06-04 2 views
3

My Qt 애플리케이션은 시작할 Oracle DLL에 따라 다릅니다. 정적으로 링크 된이 DLL을 제외하고는 DLL과 EXE를 완전히 정적 인 응용 프로그램 (exe 하나, 수행 할 DLL 없음)처럼 동작하는 실행 프로그램에 포함시키고 싶습니다.Qt에 자원 시스템 제한이 있습니까?

런처는 임시 디렉토리에서 포함 된 파일을 추출하고 소프트웨어를 실행 한 다음 완료되면 정리합니다.

나는 EXE와 Qt는 자원 시스템을 사용하여 런처에서 오라클 DLL을 (MB 30 정도)하지만 컴파일러 (2005 MSVC)를 포함

심각한 오류 C1001와 함께 실패하는 시도했다 : 내부 컴파일러에서 오류가 발생했습니다.

Qt의 리소스 시스템에 포함 된 리소스의 크기 제한이 있습니까 (아니면 실행 파일에 큰 파일을 포함하여 남용합니까?)?

답변

0

오류는 내부 컴파일러 오류라고 컴파일러에서 발생합니다. 그래서 컴파일러는 그것을 처리 할 수 ​​없었습니다. 좀 더 큰 파일을 작은 부분으로 나누어 코드로 정리할 수 있습니다. 나는 그것이 효과가 있을지 모르지만, 시도해 볼만한 가치가있다.

+0

확실히 시도해 보겠습니다! 팁 주셔서 감사합니다, 나는 계속 게시 할 것입니다! – STL

0

Qt 리소스는 리소스 컴파일러에서 처리되고 각 .qrc 파일에 대해 .cpp 파일이 생성됩니다. 나는 생성 된 .cpp 파일이 거대하고 (30MB 이상이어야 함) VC 컴파일러가 거대한 소스 파일을 컴파일 할 수 없다고 가정합니다.

1

바이너리 파일 만 분리해도 작동하지 않으면 바이너리 파일 청크 당 하나의 리소스 파일을 사용하게됩니다.

이렇게하면 결과로 생성되는 cpp 파일 크기가 훨씬 작아지며 컴파일러가이를 처리 할 수 ​​있습니다.

저는 10 MB 청크로 운 좋게도 5 개의 리소스 파일을 만듭니다 (하나는 분할되지 않은 DLL 용이고 4 개는 큰 DLL 청크 용입니다).

사용하기 전에 청크에 가입해야합니다.