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

时间:2016-04-28 09:24:40

标签: c++ windows visual-studio

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

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

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

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

请有人为我澄清一下吗?

1 个答案:

答案 0 :(得分:8)

是的,这是安全的。如果您遵守COM规则。

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

不要试图破坏这些规则

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

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

1 应用程序二进制接口