问个关于如何让dll项目摆脱第三方头文件依赖的问题

CloudAge 2009-04-05 04:27:03
我有个需要导出的类ClassDllA,在头文件的定义中有一些private字段类型来自第三方库LibThird,这样就造成了ClassDllA的用户还必须要拥有一套LibThird的头文件和lib。我希望摆脱这个负担,即用户只需要拥有一套ClassDllA的h和lib,最多外加LibThird的dll就可以正常使用。有什么好的解决方法么?
...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶落寒山 2009-04-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 akirya 的回复:]
class CNew为你导出的类,

.h
class ClassDllA ;这里前置声明,不要包含ClassDllA 的头文件

C/C++ codeclass CNew
{
ClassDllA * mp;
....
public:
CNew();
void OneFunc();
};


.cpp

C/C++ code
包含ClassDllA 的头文件
CNew::CNew:mp(new ClassDllA)
{
}
void CNew::OneFunc()
{
mp->OneFunc();
}




这样你只需要给.h别人就可以了
[/Quote]

正解,再封装一层。
fairchild811 2009-04-05
  • 打赏
  • 举报
回复
包含ClassDllA 的头文件 CNew::CNew:mp(new ClassDllA) { } void CNew::OneFunc() { mp->OneFunc(); }



up
  • 打赏
  • 举报
回复
class CNew为你导出的类,

.h
class ClassDllA ;这里前置声明,不要包含ClassDllA 的头文件
class CNew 
{
ClassDllA * mp;
....
public:
CNew();
void OneFunc();
};

.cpp

包含ClassDllA 的头文件
CNew::CNew:mp(new ClassDllA)
{
}
void CNew::OneFunc()
{
mp->OneFunc();
}


这样你只需要给.h别人就可以了
CloudAge 2009-04-05
  • 打赏
  • 举报
回复 1
[Quote=引用 2 楼 akirya 的回复:]
导出新的类
class CNew
{
ClassDllA * mp;
....

转发
};
[/Quote]

不大明白这是什么意思,能详细点么?是在什么地方预定义类型么?
CloudAge 2009-04-05
  • 打赏
  • 举报
回复
那个变量不能是静态的,每个实例都需要一个。所以我才不得不往h里写,很苦恼……
  • 打赏
  • 举报
回复
导出新的类
class CNew
{
ClassDllA * mp;
....

转发
};


「已注销」 2009-04-05
  • 打赏
  • 举报
回复 1
将private的变量变成ClassDllA的全局变量,然后去掉头文件依赖。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧