3

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

4

1 回答 1

1

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

于 2012-11-20T14:46:36.213 回答