C++DLL导出类的问题

我在做一个dll项目,要导出好几个类,供几个程序使用,但是我发现好多问题,这是我导出的类:class_declspec(dllexport)ControlMnagerCl... 我在做一个dll项目,要导出好几个类,供几个程序使用,但是我发现好多问题,这是我导出的类:
class _declspec(dllexport) ControlMnagerClass
{
public:
ControlMnagerClass(){}
~ControlMnagerClass(){}
virtual int OnGet(){}

bool IsStatic = false;
LPWSTR Name = NULL;
private:
LPWSTR String1 = NULL;
};
然后在exe中引用:

class _declspec(dllimport) ControlMnagerClass
{
public:
ControlMnagerClass();
~ControlMnagerClass();
virtual int OnGet();

bool IsStatic = false;
LPWSTR Name = NULL;
};
问题是,只要我把exe中引用类的private下全部删掉,程序就会溢出,报错:
Debug Error!
Program: E:\Ö÷Êý¾Ý¿â\±à³Ì\·½°¸\Win32Project13\Debug\Win32Project13.exe
HEAP CORRUPTION DETECTED: after Normal block (#111) at 0x015CDAD8.
CRT detected that the application wrote to memory after end of heap buffer.
(Press Retry to debug the application)

如果把
private:
LPWSTR String1 = NULL;
也加到exe的引用类中就不会出故障,这到底是为什么,好像别人导出的类根本没有私有的,却不会出故障,他们不可能不用私有变量啊,而且我也不想用户知道我这个类的私有变量。

求助大神,这个问题怎么办
展开
 我来答
arongustc
科技发烧友

2017-02-03 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:5947万
展开全部
你的导出类和导入类定义怎么会不一样?这应该完全一样才合理?
C++没有办法隐藏私有变量,因为私有变量决定了对象的大小,而对象大小必须在所有的地方都一样

正确的做法是不要直接导出类本身,而是提供一个接口,然后通过诸如工厂方法一样在DLL内部创建对象,你可以参考《COM 本质论》,蛮复杂的东西
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式