我有一个程序动态加载了 .dll
,并且我想连接该 { {1}} 和我程序的插槽。更确切地说,我想调用某个发出这些信号的函数。但是,这些信号中的只有少数实际上正在调用我程序中相应的插槽。其他人什么也不做。但是,如果我直接发出信号而不是通过函数发出信号,我会提到连接的插槽被调用。以下代码试图说明我的意思:
连接设置
.dll
.dll中的某些功能
DLLClass * dll_ptr; // pointer to dynamically loaded DLL-class
ProgClass * prog_ptr; // pointer to a class of my program
connect(dll_ptr, &DLLClass::sigA, prog_ptr, &ProgClass::slotA, Qt::DirectConnection);
connect(dll_ptr, &DLLClass::sigB, prog_ptr, &ProgClass::slotB, Qt::DirectConnection);
我的程序代码
DLLClass::function(){
emit sigA();
emit sigB();
}
其他信息
其中一些信号/插槽传递通过dll_ptr->function(); // invokes only slotA
emit dll_ptr->sigA(); // invokes slotA
emit dll_ptr->sigB(); // invokes slotB
注册的自定义类型的参数。
在另一个还动态加载.dll的程序中,一切正常。
问题
当直接发射工作正常时,为什么我的qRegisterMetaType
调用中的某些发射信号无法调用其相应的插槽?