gpt4 book ai didi

c++ - 在运行时在 v110 可执行文件中使用 v90 COM dll 是否安全?

转载 作者:可可西里 更新时间:2023-11-01 10:55:45 25 4
gpt4 key购买 nike

在使用 v110 编译器构建的可执行文件中使用使用 v90 编译器构建的 COM dll 是否安全?

可执行文件在运行时通过 COM 接口(interface)使用 v90 dll(它不是 #imported)。

可执行文件是根据 dll 的 tlb 构建的。两者都静态链接到 MFC,并且都使用 /MT 版本的运行时库。

我的理解是这是可能的,但并不安全。由于存在使用注意事项(即内存分配不同,因此不能在 dll 中分配对象并在可执行文件中删除对象,因为这会导致意外行为)。

有人可以为我澄清一下吗?

最佳答案

是的,它是安全的。前提是您遵守 COM 规则。

COM 规则是 ABI1 规则,包括与内存管理、线程等相关的规则。

永远不要试图颠覆这些规则

即使 dll 和 exe 使用相同的编译器。例如。不要在一侧分配 new 而在另一侧分配 delete - 即使您使用相同的编译器。

COM 不限制或强制任何一方的特定语言或平台 - 有许多技术、语言和平台提供 COM 互操作性,例如在 .Net 中实现的 COM 对象将与导入对象的 C++ exe 一起工作,只要双方都遵守规则。


1 应用二进制接口(interface)

关于c++ - 在运行时在 v110 可执行文件中使用 v90 COM dll 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36910450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com