我的Qt应用程序依赖于Oracle DLL来启动。由于它在大多数情况下是静态链接的(除了这些DLL),我想将DLL和EXE嵌入到一个启动器中,该启动器的行为类似于一个完全静态的应用程序(一个exe,没有带来的DLL)。
启动程序会在临时目录中提取包含的文件,启动软件,并在完成后进行清理。
我尝试使用Qt资源系统在启动程序中嵌入EXE和Oracle DLL(大约30 MB),但编译器(MSVC 2005)失败并带有
致命错误C1001:编译器中发生内部错误。
Qt资源系统中包含的资源是否有大小限制(或者我通过在可执行文件中包含如此大的文件来滥用它)?
答案 0 :(得分:1)
如果单独拆分二进制文件不行,则每个二进制文件块使用一个资源文件。
这样,生成的cpp文件要小得多,编译器就能处理它。
我很幸运拥有10 MB的块,因此可以生成5个资源文件(一个用于未分割的DLL,另一个用于较大的DLL的块)。
请记住在使用前加入这些块!
答案 1 :(得分:0)
限制来自编译器,因为错误表明它是INTERNAL编译器错误。因此compiller无法处理它。您可以尝试通过将较大的文件拆分为小部件并将它们拼凑在您的代码中来解决它。我不确定它是否有用,但值得一试。
答案 2 :(得分:0)
资源编译器处理Qt资源,并为每个.qrc文件生成.cpp文件。我想你生成的.cpp文件很大(应该超过30MB),VC编译器就是无法编译这么大的源文件。