如何将Qt资源嵌入到.dll文件中?

6
我有数百个HTML文件在我的项目中,我不想将所有这些HTML文件编译成.exe文件。因此,我希望将我的HTML文件构建为.dll文件。
如何将这样的Qt资源嵌入到.dll文件或其他类型的编译库中?

你尝试过什么?这应该可以通过Qt的标准资源嵌入功能实现(如果库与应用程序不同,请纠正我,尽管我之前使用过DLL成功地使用资源),你当然可以从Qt的优秀文档中了解如何使用。 - Christian Rau
作为一般性的回答,虽然我不知道当多个资源的名称冲突时会发生什么,但我已经成功地使用了一个带有自己Qt资源的exe文件,它加载了一个带有另一个资源的dll文件并使用它,而没有使用任何特殊手段,只是对于exe和dll都使用了Qt资源系统。这就是为什么我想听听您遇到了什么特别的问题。 - Christian Rau
2
因为通常编译Qt项目时,资源文件会嵌入到exe文件中,我的问题是我想将它们嵌入到dll文件而不是exe文件中,这一点不清楚吗,Christian? - Reza Ebrahimi
@RezaEbrahimi 那就做一个dll项目而不是exe,Qt资源系统的工作方式相同。你试过了吗?如果是,那么什么没有起作用以及如何解决 - Christian Rau
2
好的,事情有点失控了,所以我已经修剪了评论。Reza,你不能把反对票当成个人攻击,但你应该把它们视为问题可能存在的指示。最初,它缺乏信息,这就是为什么人们投票反对的原因。你提供的额外细节有很大帮助,尽管在这里要求人们提供代码通常被认为是粗鲁的。我试图编辑你的问题以澄清你的问题,这应该有助于获得更好的回复。 - Brad Larson
2个回答

10
你是否只会将dll用于html文件中,还是它还会包含代码?如果dll仅用于html文件,请创建一个external外部资源文件。请将qrc文件编译为外部资源文件:
rcc -binary myresource.qrc -o myresource.rcc

在您的exe中注册资源文件:

QResource::registerResource("/path/to/myresource.rcc");

有没有一种方法可以在 .pro 文件中配置此选项?我的意思是自动调用带有 -binary 和 -o 选项的 rcc 来处理指定的文件,并自动调用 QResource::registerResource 处理这些文件? - Valentin H

2
如果你好奇(或者其他人需要这个解决方案),我也遇到了同样的问题,不过 RCC 文件对我来说不是一个选项(我需要在 DLL 文件中)。 这里是我开始并解决的主题 基本上,在我的库(DLL)项目中,我必须:
  1. 在库(DLL)项目中的.pro文件中包含qrc_RESOURCE_NAME.cpp文件 - 这是在编译时生成的,所以您很可能需要编译两次(第一次(只有 qmake 就足够了)生成 qrc_RESOURCE_NAME.cpp文件,第二次用于与项目一起编译)
  2. 直接或间接地将该qrc_RESOURCE_NAME.cpp文件包含到您的应用程序(EXE)项目中
  3. 正常使用协议qrc:///(或缩写为:/)来加载您的文件
要获取更多详细信息,请访问我发布的链接。

从你的说法中,我看不到任何DLL导出,我认为这种方式不会产生任何DLL文件,请澄清你的答案,谢谢。 - Reza Ebrahimi
我修改了我的回答。对于造成的混淆感到抱歉,这些修改只适用于库项目,而不是应用程序。 - DRAX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接