2010-06-04 96 views
3

我的Qt应用程序依赖于启动的Oracle DLL。因为它大部分是静态链接的(这些DLL除外),我想将DLL和EXE嵌入到一个启动器中,它的行为就像一个完全静态的应用程序(一个exe,没有DLL)。Qt是否有资源系统限制?

启动程序会将包含的文件解压到临时目录中,启动软件并在完成时清理。

我试图嵌入的EXE和使用Qt资源系统在Oracle的DLL(约30 MB)的发射,但是编译器(MSVC 2005)失败与

致命错误C1001:内部编译器中发生错误。

Qt的资源系统中包含的资源是否有大小限制(或者是否通过在我的可执行文件中包含这样的大文件来滥用它)?

回答

0

限制来自编译器,因为错误表示它是INTERNAL编译器错误。所以竞争者无法处理它。您可以尝试绕过它,将较大的文件分割成小部分,然后手动将它们放在代码中。我不确定它是否会起作用,但值得尝试。

+0

我一定会尝试!感谢您的提示,我会保持您的发布! – STL 2010-06-07 12:34:38

0

Qt资源由资源编译器处理,并为每个.qrc文件生成.cpp文件。我想你生成的.cpp文件是巨大的(应该超过30MB),VC编译器无法编译如此巨大的源文件。

1

如果单独分割二进制文件不会这样做,那么每个二进制文件块都会使用一个资源文件。

这样,生成的cpp文件就小得多了,编译器能够处理它。

我已经幸运地拥有10 MB的块,因此可以创建5个资源文件(一个用于非分离的DLL,另一个用于大块DLL的块)。

只记得在使用前加入大块!