我有一个使用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