用VS2008构建的dll可以使用VS2010构建的dll

时间:2012-11-20 14:37:05

标签: visual-studio-2010 visual-studio-2008 com mixing

我有一个使用VS2010构建的DLL(DLL A),它使用MFC和其他使用VS2010构建的dll。 我有另一个DLL(DLL B),它是用VS2008构建的,并在一个应用程序上运行,该应用程序再次使用VS2008构建。 DLL A导入DLLB(带#import指令)并创建com对象。对象本身的创建成功但应用程序崩溃了。我认为它在显示控件时崩溃(这些只是假设)。问题是我没有应用程序的来源。 DLL A只是该应用程序的插件。 问题是,做这种混合时有什么需要考虑的吗?它有可能吗?

1 个答案:

答案 0 :(得分:1)

是的,如果使用C链接,那么在DLL边界上调用代码应该没问题,即。如果DLL边界使用原始C类型,如char *和int。如果您在DLL边界上传递C ++引用/指针,那么您应该使用相同的编译器标志和相同的编译器构建双方。例如,VS2010编译器将以与VS2008编译器完全相同的方式布局类对象的内存,但是不能保证。虽然如果使用相同的字节对齐标志,布局很可能是相同的,你不能保证它