找回密码
 立即注册
收起左侧

qt dll中包含多个指针,各自指向不同的界面类

3
回复
281
查看
[复制链接]
累计签到:2 天
连续签到:2 天
来源: 2021-4-21 16:40:20 显示全部楼层 |阅读模式
1Qter豆
我希望能通过DLL的方式,封装多个界面,假设这个dll叫做A,在a.h中,包含各个界面对应的.h文件,同时在a.h中,增加各个界面的指针,以及对应各个界面的实例化方法(返回地址给各自的指针)。个人认为通过对应的指针,就能访问并操作对应的界面,且能由指针来调用各个界面内的public方法,这样就能通过各个指针来操作界面内的数据,相当于分级操作。然而,编译时提示:-1: error: undefined reference to (对应的方法)。 应该是a.h只对外暴露了a.h的方法,对于各个指针指向的别的界面的方法不能访问到。如果要能通过外部操作不同的界面,只可以在a.h中把各个界面的方法全部写上(就不能分级写在不同的界面中了)。因此,想请教,应该如何做才能访问到各个不同界面的指针所对应的函数呢?
简单举例如下:

#ifndef A_H#define A_H
#include "a.h"#include "form1.h"//界面1
#include "form2.h"
//界面2
#include "form3.h"//界面3
#include "form4.h"//界面4
class ASHARED_EXPORT A{public:    a();    Form1* initForm1();
    Form2* initForm2();
    Form3* initForm3();
    Form4* initForm4();
//各个form各自有自己的方法,通过不同的initForm()来返回地址,
//并交给各自的指针,但是在别的dll或者主界面调用时不能通过编译
    Form1* p_form1=nullptr;
    Form2* p_form2=nullptr;
    Form3* p_form3=nullptr;
    Form4* p_form4=nullptr;

};



回复

使用道具 举报

累计签到:2 天
连续签到:2 天
2021-4-22 11:16:23 显示全部楼层
额,有人知道么,还是说我做法有问题?
目前我已经直接在主h中写多个方法了,也能做,不过明显是各个界面分开写会更好,清爽。
回复

使用道具 举报

累计签到:788 天
连续签到:5 天
2021-4-25 09:29:57 显示全部楼层
你在外部编译未包含A.lib的连接
回复

使用道具 举报

累计签到:788 天
连续签到:5 天
2021-4-25 09:34:05 显示全部楼层
如果是QT,在.pro文件中添加 LIBS += -lA
如果是VS,在StdAfx.cpp中添加 #pragma comment(lib, "A.lib")
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册