首页| 论坛| 消息
主题:Qt生成的dll使用(求助)
回帖: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 = new testTimer();
extern "C" __declspec(dllexport)
int connect1();int connect1()
{//qApp->exec();
return test11->value1;
//return currentcon->on_connect();
}
方法二 我使用了别人做的使C#调用的界面类
testTimer *currenttest = new testTimer();
ui->doubleSpinBox->setValue(currenttest->value1);
结果是 第一种方法 结果一直为0,第二种方法 结果与预期符合,一直在变化
直接使用类,数没变化

浏览大图

使用界面执行情况

浏览大图

使用界面,再次点击 数变化

浏览大图

直接使用类,数没变化

浏览大图

下一楼›:lanmanck:上代码,connect有返回值 (2020-10-15 09:26) 
您看一下我的含有代码的 ..
‹上一楼:其他功能没有问题的话, 有没有可能是qt的事件没有开启, 就是qt的main里的a.exec(), 因为你是 ..

查看全部回帖(9)
«返回主帖