我有一個使用DLL「program.dll」的外部命令行可執行程序「program.exe」。我想將這兩個文件作爲資源嵌入到我的Qt應用程序中。然後,我需要能夠從我的應用程序運行program.exe。可以用Qt來完成嗎?特別是,可以將可執行文件和DLL添加爲資源?將可執行文件添加爲Qt應用程序的資源?
3
A
回答
3
您可以將它們添加爲資源,但無法直接從資源執行您的「program.exe」,因爲這是純粹的Qt系統,底層操作系統無法理解。
在執行時您需要做的是將其(使用.dll)從資源複製到臨時位置並從那裏執行。
顯然,正如@webclectic指出的那樣,這不是一個合適的方法。除非有充分的理由這樣做,否則正確的方法是用這些可執行文件創建一個包(取決於目標操作系統的.msi,.rpm)並以這種方式部署它們。
3
特別是,可以將可執行文件和DLL添加爲資源?
是的,他們可以,如果你添加一個可執行文件到qrc文件,你會注意到你的Qt應用程序的大小會增加所增加的資源可執行文件的大小。
但是,你真的想要做這樣的事嗎?我從來沒有試過做類似的事情,但我懷疑這是否可能。系統將無法從您的資源中讀取可執行文件。可執行文件的執行是系統特定的,系統需要能夠找到要執行的文件。我想在你的應用程序啓動時,你可以將可執行文件複製到一個臨時目錄並從那裏調用它。在應用程序退出時,應該刪除這些文件。
就我個人而言,我不會採用這種方法。它更簡單和優雅(恕我直言)創建一個安裝程序,將複製應用程序文件夾中的所有必要的可執行文件/ dll。
0
二進制文件可以作爲資源添加,並像其他人聲明的那樣,將二進制文件提取到臨時位置以便從那裏執行。這與自解壓安裝程序的工作方式類似。
但是,也可以直接使用它們,而不必通過寫入自定義DLL加載程序將它們保存到臨時位置。
我不確定,但我認爲可執行文件可以以相同的方式加載並由分叉開始。但是我認爲,與直接從硬盤驅動器啓動時相比,最終的過程會有所不同。
我已經看到完全做到這一點的應用程序的源代碼,但它是非平凡的,需要知識的底層的東西。如果有人有如何實現這一目標的良好資源,請添加它們。
相關問題
- 1. 如何將文件添加到UWP應用程序的資源?
- 2. 爲C#應用程序添加新的語言資源文件
- 3. 將web應用程序作爲資源嵌入到C++ Qt可執行文件中
- 4. 無法將資源文件添加到鈦android應用程序
- 5. 如何爲Qt應用程序創建可執行文件?
- 6. 資產添加文件位於應用程序/資源/ js
- 7. Qt包含可執行文件內的資源目錄結構
- 8. Blackberry - 從應用程序資源中將mp3文件添加到sdcard文件夾
- 9. 向Silverlight應用程序添加資源
- 10. OS X應用程序包中的Qt資源文件
- 11. 如何在Grails應用程序中添加資源文件?
- 12. 添加和訪問資源文件到Play Framework應用程序
- 13. 如何將Java應用程序轉換爲可執行文件?
- 14. 將Web應用程序部署爲獨立可執行文件
- 15. 將HTML5 Canvas + Javascript應用程序轉換爲可執行文件
- 16. 將MATLAB 2009b應用程序編譯爲Windows可執行文件
- 17. 將openCV .dll文件添加到Netbeans C++ Qt應用程序
- 18. 基於默認資源文件爲應用程序生成資源文件
- 19. 將QML嵌入到資源Qt應用程序中的問題
- 20. 添加文件系統目錄作爲資源目錄在SpringBoot應用程序
- 21. Qt執行外部可執行程序?
- 22. 如何從代碼添加文件到QT資源文件?
- 23. 將WPF本地資源轉換爲應用程序資源
- 24. 將多個圖標(Win32資源)添加到.NET應用程序
- 25. 將資源嵌入到二進制映像/程序可執行文件/ .exe中?
- 26. 生成安裝程序可執行文件後添加文件
- 27. 在我的Qt應用程序中運行另一個可執行文件
- 28. 將文件從應用程序拖到資源管理器。我的應用程序可以進行復制嗎?
- 29. Qt的資源文件
- 30. 將資源文件添加到VC6 dll
是的,我害怕這一點。當然,我知道我可以簡單地安裝可執行文件,但由於各種原因,我寧願將它作爲資源(主要是爲了讓用戶更難交換另一個可執行文件 - 我知道可以提取資源並進行了更改,但比交換文件更困難)。 – 2012-03-13 11:30:24