Qt有资源系统的限制吗?

4
我的Qt应用程序依赖于Oracle DLL才能启动。由于它主要是静态链接的(除了这些DLL),我想将DLL和EXE嵌入到一个类似完全静态应用程序的启动器中(一个exe,无需携带任何DLL)。
启动器会将包含的文件提取到临时目录中,启动软件,并在完成后进行清理。
我尝试使用Qt资源系统将EXE和Oracle DLL(约30 MB)嵌入到启动器中,但编译器(MSVC 2005)失败并显示如下错误:
致命错误 C1001:编译器内部发生错误。
是否有关于Qt资源系统中包含资源大小的限制(或者我是否滥用了它,将如此大的文件包含在我的可执行文件中)?
3个回答

1
如果仅拆分二进制文件无法完成,可以使用每个二进制文件块一个资源文件的方法。这样,生成的cpp文件更小,编译器可以处理它。
我使用10 MB块大小比较顺利,需要5个资源文件(一个用于未拆分的DLL,4个用于大DLL的块)。
只需在使用前记得合并这些块!

0

限制来自编译器,因为错误提示是内部编译器错误。所以编译器无法处理它。您可以尝试通过将较大的文件分割成小部分并手动将它们放在代码中来解决问题。我不确定它是否有效,但值得一试。


我一定会尝试的!谢谢你的建议,我会保持联系! - STL

0
Qt资源被资源编译器处理,每个.qrc文件生成一个.cpp文件。我猜你生成的.cpp文件很大(应该超过30MB),VC编译器无法编译这么庞大的源文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接