如何分割嵌入在DLL中的QML文件?

问题描述 投票:0回答:1

我有已嵌入到dll中的QML文件。我认为已完成了类似的操作

How can I embed a Qt resource into a .dll file?(第二个答案)。

反正是否有将QML文件拆分为源代码的方法?我对QT框架不是很熟悉

qt dll qml dllregistration
1个回答
0
投票

如果通过* .qrc嵌入,则与标准Windows / Linux(.dll / .so)资源格式不兼容。 qrc被编译为xxx_qrc.cpp文件,并由链接程序嵌入为具有静态初始化代码的.obj文件。即它只是二进制文件的一部分。您可以通过QFile使用“ qrc:/ ” URL访问qrc的“内容”。但是为此,您必须使用当前进程中嵌入的资源加载DLL,因为qrc已挂接到静态初始化中(在Windows中也称为DllMain)。类似于:

QLibrary lib("./library.dll");
if (!lib.load()) 
    throw exception(lib.errorString().toStdString());
QFile resource(":/resource.qml");
if (!resource.open(QIODevice::ReadOnly))
    throw exception(resource.errorString().toStdString());
resource.copy("./exported.qml");

要浏览当前加载的虚拟qrc文件系统树,可以使用QDir(“:/”)。我想从这里找出其余部分非常容易。

当然,您必须知道正在将哪种DLL加载到您的进程中,因为它们可能包含将在您调用QLibrary :: load时执行的任意代码!

© www.soinside.com 2019 - 2024. All rights reserved.