当前位置: 代码迷 >> QT开发 >> 关于Qt创设动态库的一些疑问
  详细解决方案

关于Qt创设动态库的一些疑问

热度:78   发布时间:2016-04-25 03:14:44.0
关于Qt创建动态库的一些疑问
我用Qt 创建一个 动态库 ,里面的 普通函数 都可以调到,可是 信号和槽 就不行,提示:C:\Users\xinyi_soft\Desktop\Qt\mydll\mainwindow.cpp:36: error: undefined reference to `Testm::send()'
动态库代码如下:
编译可通过,运行也可以 ,就是不能用 信号和槽。
头文件     .h
#ifndef MY_DLL_TEST_H
#define MY_DLL_TEST_H

#include "my_dll_test_global.h"
#include <iostream>
#include <string>

#include <QObject>

using namespace std;

class  Testm:public QObject
{
    Q_OBJECT
public:
     Testm(QObject *parent=0);
     virtual ~Testm();
    string func(){ cout<<"test1"<<endl; return "teste1";}
signals:
    void send();
public slots:
    void receive(){  cout<<"str reveive ......."<<endl; }

};

class MY_DLL_TESTSHARED_EXPORT My_dll_test
{

public:
    My_dll_test();
    ~My_dll_test();
    Testm *tm;
};
#endif // MY_DLL_TEST_H
.cpp 文件
#include "my_dll_test.h"

Testm::Testm(QObject *parent)
    :QObject(parent)
{
    connect(this,SIGNAL(send(string)),this,SLOT(receive(string)));
}
Testm::~Testm()
{

}

My_dll_test::My_dll_test()
{
    tm = new Testm;
}
My_dll_test::~My_dll_test()
{
    delete tm;
}

#endif // MY_DLL_TEST_H
------解决方案--------------------
connect(this,SIGNAL(send(string)),this,SLOT(receive(string)));
signals:
    void send();
public slots:
    void receive()

参数都不一致
------解决方案--------------------
引用:
#1 看的很仔细啊!  不过我觉得 这个 不是原因, 我改过了 ,试了 还是不行, 但是 槽函数可以直接 调到。。


没有发出信号的地方,发信号要这样写
emit send();
  相关解决方案