如何在VS2008中使用VS2010内置的dll

时间:2011-06-30 07:32:36

标签: visual-studio-2010 visual-studio-2008 dll

在我的工作中,我们有 VS2008 。 我工作的项目中的一些合作伙伴,使用 VS2010 (不能使用VS2008)

他们必须建立一个基于dll的我必须在我的框架中使用该dll ...

我设法构建主应用程序并链接dll。 应用程序启动,并创建VS2010 dll的对象, 但是当我尝试删除这些对象时,应用程序崩溃了......

  

Windows在app.exe中触发了断点。这可能是由于a   堆的损坏,表示app.exe或任何一个中的错误   已加载的DLL。

您对如何解决此问题有任何想法吗?

2 个答案:

答案 0 :(得分:4)

您的同事的DLL与VS2010的运行时库链接。您的代码与VS2008的运行时库链接。

当您从VS2010 dll调用某个函数来分配新对象时,它将在该库的堆上分配。当您在该对象上调用“delete”时,VS2008的运行时库将尝试将其从自己的堆中释放。由于它们不同,因此会出现错误。

如果要混合这样的运行时,则需要VS2010 dll为每种类型公开free() - 样式函数(只是C ++析构函数)。在混合运行时库时,您应该非常小心,例如使用STL容器或任何类型的“写时复制”对象。一般来说,避免它更容易。

答案 1 :(得分:0)

在dll或exe中分配的对象应该在同一个地方解除分配。您需要与合作伙伴讨论这个问题。因为目标可以用于重载分配和解除分配运算符http://www.cprogramming.com/tutorial/operator_new.html