用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()的实现放在源文件中(注释部分),则会报错。 不知为何?求高人指点 谢谢!