C#调用qt编写的dll问题,信号与槽函数无法使用
使用Qt生成动态链接库dll 文件,不带界面。
使用过程中自定义了一个类,类中含有connet。具体代码如下:
类的定义:
class testTimer : public QObject
{
Q_OBJECT
public:
explicit testTimer(QObject* parent = nullptr);
QTimer *testtimer = new QTimer();
int value1 = 0;
QMetaObject::Connection flag;
private slots:
void calTest();
};
类的声明:
testTimer::testTimer(QObject *parent) : QObject(parent)
{
flag = connect(testtimer,&QTimer::timeout,[=]()
{
value1= value1+1;
}
);
testtimer->start(1000);
}
void testTimer::calTest()
{
value1 = value1+1;
}
类的使用 两个使用方法
方法一:直接在main中
testTimer *test11 = new testTimer(); //使用该类定义了一个函数
extern "C" __declspec(dllexport) int start(); // dll
int start()
{
return test11->value1; //返回value1的值
}
方法二:借用别人写的在C#中显示界面的类
在界面中调用类
testTimer *currenttest = new testTimer();//定义
void MainWindow::on_pushButton_2_clicked()
{
ui->doubleSpinBox->setValue(currenttest->value1);
}//界面里的一个按钮,点击按钮弹出数值
在C#中,点击一个按钮1,弹出一个Qt编写的界面
点击按钮2 ,弹出函数value1值的一个界面
结果是 按钮1 的界面 中点击on_pushButton_2,此时的value1值一直在变化,符合预期
点击按钮2 弹出的value1的值一直是0。
有人知道什么原因么?是我没有少添加了什么东西么?