当C++的静态成员邂逅DLL。。。
基类作为一个公共模块,exe和dll均有定义,其中有个成员:m_SharedObj,dll定义了一个子类,在exe中给这个成员初始化并赋值后,调试发现,在dll中的m_SharedObj仍为空,并且两者地址也不同。。。这个跟CPP标准是不是冲突了呢?调试环境:WinXP+VS2008
[解决办法]
只要指针指向正确的地址,是可以共享的. 你最好是调试看看,是哪里出了问题.
[解决办法]
所以啊,珍惜生命,远离扩展dll,只使用纯C接口的标准dll。
[解决办法]
基类作为一个公共模块,exe和dll均有定义,其中有个成员:m_SharedObj
问题出在这里
请确定m_SharedObj对于DLL是否为导出,对于exe是否为导入。
[解决办法]
[解决办法]
dll不共享变量,所有加载dll的进程,会拷贝一份实例
如果你要共享变量,把变量加到共享数据段里面去
ps. dll只是作为共享代码用的,而且,dll里面写类。。这个,会迟早出事
[解决办法]
反对5L意见"dll里面写类。。这个,会迟早出事",不解释。
[解决办法]
[解决办法]
1. 使用规则来规避错误.
2. 了解细节来规避错误.
很明显你不满足2号条件
[解决办法]
导出类因为陷阱太多,所以才建议不要用。你没有腾讯那么多人力去越过这么多陷阱。