小编Max*_*nko的帖子

如何使用 QPluginLoader 在 Qt 中创建同一个插件的多个实例?

首先对不起我的英语

我已经使用 Qt 开发了财务打印机的驱动程序。驱动程序细节是通过 RS232 在 PC 和设备之间进行通信。存储在共享对象(Qt 插件)中的驱动程序和服务器通过 QPluginLoader 执行其加载。

所以,关于我的问题......当我使用一个设备和一个驱动程序实例时一切正常,但是当我连接许多设备(例如 3 个)时,只有最后加载的设备工作。我已经完成了许多代码检查,读取了许多日志数据转储,设备和端口命名没有错误,但是如果我使用命令寻址第一个设备 - 2 个左侧设备接收相同的命令(根据日志条目)并且仅最后加载设备执行命令执行。

例如:我从我的服务器向设备 1 发送 PrintReceipt 命令,在设备 1 的日志文件中我看到条目:PrintReceipt,在设备 2 的日志文件中我看到条目:PrintReceipt、:PrintReceipt 和设备 3 的日志文件我看到3个相同的条目。所以,当我看到我的问题时 - QPluginLoader 为第一个加载的设备创建一个驱动程序实例,然后,当我尝试将驱动程序加载到第二个设备时 - QPluginLoader 创建新实例并替换最近创建的第一个设备的驱动程序,依此类推每个设备. 因此,至少,对于许多设备,我只有一个驱动程序(插件)实例,并且我的应用程序逻辑崩溃了。

我的问题是:如何使用 QPluginLoader 在 Qt 中创建同一个插件的多个实例?下面列出了我的驱动程序界面和加载代码。

class IPrinterDriver : public QObject
{
public:

// Printer driver initialization
virtual bool Init(QextSerialPort* port, const QString& deviceID) = 0;

// Driver identify name
virtual QString GetName() = 0;

// Gets current device state
virtual DeviceStates GetState() …
Run Code Online (Sandbox Code Playgroud)

qt multiple-instances

5
推荐指数
1
解决办法
1774
查看次数

标签 统计

multiple-instances ×1

qt ×1