当C++的静态成员邂逅DLL。。。

ccnyou 2012-08-12 05:12:20
基类作为一个公共模块,exe和dll均有定义,其中有个成员:m_SharedObj,dll定义了一个子类,在exe中给这个成员初始化并赋值后,调试发现,在dll中的m_SharedObj仍为空,并且两者地址也不同。。。这个跟CPP标准是不是冲突了呢?调试环境:WinXP+VS2008
...全文
185 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rendao0563 2012-08-13
  • 打赏
  • 举报
回复
1. 使用规则来规避错误.
2. 了解细节来规避错误.
很明显你不满足2号条件
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 6 楼 的回复:

反对5L意见"dll里面写类。。这个,会迟早出事",不解释。


请看腾讯的common.dll,里面一大堆导出类
[/Quote]
这个 你不是出事了么?
taodm 2012-08-13
  • 打赏
  • 举报
回复
导出类因为陷阱太多,所以才建议不要用。你没有腾讯那么多人力去越过这么多陷阱。
ccnyou 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:

引用 6 楼 的回复:

反对5L意见"dll里面写类。。这个,会迟早出事",不解释。


请看腾讯的common.dll,里面一大堆导出类

这个 你不是出事了么?
[/Quote]

但是并不是说不能导出类啊
ccnyou 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

反对5L意见"dll里面写类。。这个,会迟早出事",不解释。
[/Quote]

请看腾讯的common.dll,里面一大堆导出类
RLib 2012-08-12
  • 打赏
  • 举报
回复
反对5L意见"dll里面写类。。这个,会迟早出事",不解释。
localxiao 2012-08-12
  • 打赏
  • 举报
回复
dll不共享变量,所有加载dll的进程,会拷贝一份实例

如果你要共享变量,把变量加到共享数据段里面去

ps. dll只是作为共享代码用的,而且,dll里面写类。。这个,会迟早出事
titer1 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

基类作为一个公共模块,exe和dll均有定义,其中有个成员:m_SharedObj

问题出在这里

请确定m_SharedObj对于DLL是否为导出,对于exe是否为导入。
[/Quote]
++

被作者文艺的问题名字吸引
RLib 2012-08-12
  • 打赏
  • 举报
回复
基类作为一个公共模块,exe和dll均有定义,其中有个成员:m_SharedObj

问题出在这里

请确定m_SharedObj对于DLL是否为导出,对于exe是否为导入。
taodm 2012-08-12
  • 打赏
  • 举报
回复
所以啊,珍惜生命,远离扩展dll,只使用纯C接口的标准dll。
xiaohuh421 2012-08-12
  • 打赏
  • 举报
回复
只要指针指向正确的地址,是可以共享的. 你最好是调试看看,是哪里出了问题.

64,650

社区成员

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

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