2010-06-04 130 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的塊)。

只記得在使用前加入大塊!