标题:Qt生成的dll使用(求助)
作者:winston_zbb
日期:2020-10-14 22:10
内容:
由于项目需要,先需要使用qt生成dll文件,供C#调用,目前在使用connect中遇见问题! 我的程序在qt上运行时,按照设计的想法,执行了槽函数。但是在C#调用qt生成的dll文件时,并没有执行槽函数,不知道是没有触发,还是没有connect成功,有遇见这种情况的么?该如何解决这个问题!
#1 [lanmanck 10-15 09:26]
上代码,connect有返回值
#2 [272064949 10-15 09:42]
其他功能没有问题的话, 有没有可能是qt的事件没有开启, 就是qt的main里的a.exec(), 因为你是用c#调用dll, 所以没有这几行代码。如果没有跨线程的话, 试试用c++11的方式使用看行不行,
connect(obj, &ojb::sig, [=](){
});
#3 回 272064949 的帖子 [winston_zbb 10-15 11:12]
272064949:
其他功能没有问题的话, 有没有可能是qt的事件没有开启, 就是qt的main里的a.exec(), 因为你是用c#调用dll, 所以没有这几行代码。如果没有跨线程的话, 试试用c++11的方式使用看行不行,
connect(obj, &ojb::sig, [=](){
});
我定义了一个类,类里面有一个connect ,具体如下:
.h
class testTimer : public QObject
{
Q_OBJECT
public:
explicit testTimer(QObject* parent = nullptr);
QTimer *testtimer = new QTimer();
int value1 = 0;
private slots:
void calTest();
};
.cpp
testTimer::testTimer(QObject *parent) : QObject(parent)
{
connect(testtimer,&QTimer::timeout,[=](){value1= value1+1;});
testtimer->start(1000);
}
void testTimer::calTest()
{
value1 = value1+1;
}
我使用了两种方法调用 方法一 : 我生成dll文件中调用
testTimer *test11 =[color=#c0 ..
#4 回 lanmanck 的帖子 [winston_zbb 10-15 14:42]
lanmanck:上代码,connect有返回值 (2020-10-15 09:26)
您看一下我的含有代码的回复,我在界面类中调用成功,但是我直接使用类,就失败,不知道什么原因
#5 [圣域天子 10-18 13:05]
Qt也需要先启动消息循环才能用信号槽,其它语言调用Qt的DLL时,一般是不能用信号槽的。
除非先实例化QXXXXXApplication