• 5845阅读
  • 4回复

[提问]使用自己编写的dll出现的问题 [复制链接]

上一主题 下一主题
离线redcoco
 
只看楼主 倒序阅读 楼主  发表于: 2011-07-19
用qt编写了一个简单的dll,只定义类一个类:
头文件
class DLLTESTSHARED_EXPORT DllTest {
public:
    DllTest();
   int Add(){
        return 10;
    }    
/*
    int Add();
*/

};
extern "C" DLLTESTSHARED_EXPORT DllTest* getDllTest();  //使用类

源文件:
DllTest::DllTest()
{
    qDebug()<<"DLL TEST";
}

/*
int DllTest::Add(){
    return 10;
}
*/


DllTest* getDllTest() {
    return new DllTest();
}

新建工程,使用dll文件:
typedef DllTest* (*GetFunc)();

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);  
    QLibrary lib("DllTest");      
    if(lib.load()){      
        GetFunc g = (GetFunc)lib.resolve("getDllTest");
        if(g){
            DllTest *t = g();
            qDebug()<<t->Add();
            delete t;
        }
    }
    else
        qDebug()<<"load failed";

    return a.exec();
}

结构正常,在终端输出 10
但是,如果把dll中DllTest类中Add()的实现放在源文件中(注释部分),则会报错。 不知为何?求高人指点   谢谢!
离线redcoco
只看该作者 1楼 发表于: 2011-07-20
无人问津。。。
离线XChinux

只看该作者 2楼 发表于: 2011-07-20
确认你的宏定义使用全正确了吗?
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线weihua1984

只看该作者 3楼 发表于: 2011-07-20
头文件包含地干活
离线redcoco
只看该作者 4楼 发表于: 2011-07-21
回 2楼(XChinux) 的帖子
不是在global.h里定义了吗?求详解   谢谢
快速回复
限100 字节
 
上一个 下一个