VC ++ 2010成员变量和陈旧的.Dll

时间:2014-02-26 17:25:36

标签: c++ visual-studio-2010 visual-c++ dll

我正在使用Microsoft VC ++ 2010,我想知道它是如何或在一般的C ++编译器中,弄清楚它是如何将.Dll链接在一起的。

这是出于以下用例: 我一直在研究一个项目(称之为A),它将产生一个.DLL,而这个.DLL将用于另一个项目(称之为B),它产生一个.exe。我向项目A中的类添加一个新的成员变量,用它做一些事情并编译​​它。

std::unique_ptr<SomeClass> m_new_var;

然后我处理项目B并在项目A中使用新的成员变量m_new_var。它编译得很好。当我在调试器中执行项目B时,我发现只要代码对A中的m_new_var执行任何操作,就会导致无效的内存访问。搞砸了之后,我发现它可以在以下情况下起作用:

1)添加完全相同类型的另一个成员变量,例如:

std::unique_ptr<SomeClass> m_new_var;
std::unique_ptr<SomeClass> m_new_var2;

2)删除我的x64文件夹并重新生成所有内容。

显然解决方案1并不理想,但我不太明白为什么删除我的x64文件夹会解决问题。我相信这与链接旧版本的.Dll有关,但我不确定。

0 个答案:

没有答案