[Interest] Is it possible to override dll in runtime in Qt?

Vincent Cai wcai at cypress.com
Wed Apr 9 12:37:55 CEST 2014


Thanks a lot!
I have already implemented Core.dll and Prmt.dll in the way you suggested.
Will learn how to use QPluginLoder for such case.
If anyone can provide a sample code, that would be greatly helpful. :)

From: manish sharma [mailto:83.manish at gmail.com]
Sent: Wednesday, April 09, 2014 6:06 PM
To: Vincent Cai
Cc: interest at qt-project.org
Subject: Re: [Interest] Is it possible to override dll in runtime in Qt?

you might want to take a look at http://qt-project.org/doc/qt-5/qtwidgets-tools-plugandpaint-example.html

On Wed, Apr 9, 2014 at 3:29 PM, manish sharma <83.manish at gmail.com<mailto:83.manish at gmail.com>> wrote:
I think you might have to design your application something like below:
For instance all the Prmt.dlls should implement a common interface for instance: PrmtInterface and place it under PrmtInterface.h
And your Core.dll only know about PrmtInterface.h, it should not link to any of the Prmt.dll. And then you go on implementing Prmt.dlls and place it to different folders. And at run time you should use QPluginLoader to load/unload appropriate plugin.

Hope this help!

On Wed, Apr 9, 2014 at 12:22 PM, Vincent Cai <wcai at cypress.com<mailto:wcai at cypress.com>> wrote:
Hi manish,

               Thanks for the reply.
               I am totally new to QPlugin and QLibrary.
               I don't quite understand your meaning.
               With your method below, can I load A/Prmt.dll then unload A/Prmt.dll and then load B/Prmt.dll in runtime without restarting Application?
               BTW, Core.dll is dependent on Prmt.dll, how can Core.dll know access symbols in Prmt.dll after changing Prmt.dll?

Regards,
Vincent.
From: manish sharma [mailto:83.manish at gmail.com<mailto:83.manish at gmail.com>]
Sent: Wednesday, April 09, 2014 2:42 PM
To: Vincent Cai
Cc: interest at qt-project.org<mailto:interest at qt-project.org>
Subject: Re: [Interest] Is it possible to override dll in runtime in Qt?

i think it should work using pluginloader something like below:

QObject* getPrmt(QString path)
{
        QDir pluginsDir(path)
        QPluginLoader loader(pluginsDir.absoluteFilePath(fileName));
        return loader.instance();
}
and call getPrmt function with any of "A/Prmt.dll", "B/Prmt.dll"?

On Wed, Apr 9, 2014 at 10:34 AM, Vincent Cai <wcai at cypress.com<mailto:wcai at cypress.com>> wrote:
Dear All,

I have an Qt application, which uses 2 dll, one is Prmt.dll and the other is Core.dll. Core.dll is dependent on Prmt.dll. Prmt.dll has multiple instances in different folders, for example: A/Prmt.dll, B/Prmt.dll... The Qt application provides an option to choose Prmt.dll, so it need to override Prmt.dll in runtime. Is it possible to override dll in runtime in Qt?

Regards,
Vincent.
This message and any attachments may contain Cypress (or its subsidiaries) confidential information. If it has been received in error, please advise the sender and immediately delete this message.

_______________________________________________
Interest mailing list
Interest at qt-project.org<mailto:Interest at qt-project.org>
http://lists.qt-project.org/mailman/listinfo/interest

This message and any attachments may contain Cypress (or its subsidiaries) confidential information. If it has been received in error, please advise the sender and immediately delete this message.


This message and any attachments may contain Cypress (or its subsidiaries) confidential information. If it has been received in error, please advise the sender and immediately delete this message.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20140409/622b8391/attachment.html>


More information about the Interest mailing list