我正在使用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有关,但我不确定。