【问题标题】:Can dll built with VS2008 use dll built with VS2010VS2008构建的dll可以使用VS2010构建的dll吗
【发布时间】:2012-11-20 14:37:05
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 所有进出DLL A的参数都是暴露在DLL A中的com对象
    • 在这种情况下,既然您使用的是 COM,那么 dll 边界的每一侧没有理由不应该使用不同的编译器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    相关资源
    最近更新 更多