C++/CLI 64位COM

问题描述:

我有一个包装本机32位dll的C++/CLI程序集。C++/CLI 64位COM

该程序集既用于.Net又用于COM(办公室)。

现在我有一个运行64位办公室的客户。

是否可以创建一个使用本机32位dll并导出64位com接口的C++/CLI程序集?

不,您不能在Windows上的一个进程中混合使用不同位数的代码。您需要强制32位代码进入单独的进程或转换该DLL。

后者很可能通过使用COM +(或大部分相同的DCOM)来实现。这是我们通常使用本机C++代码所做的。我不确定C++/CLI程序集有多容易。

+0

这就是我所怀疑的。谢谢 – adrianm 2010-09-03 10:00:30

+0

由于Office/plugin接口已经是COM,所以不妨在C/C++和本地库之间引入新的转换层。 – 2010-09-03 14:21:25

以某种方式说话,是的。

继续编译C++/CLI代码为32位,因此它可以使用C++ interop使用本地库。

然后,您必须将其配置为在充当Office 64插件时作为进程外COM服务器加载。使用原生COM代码,midl会自动生成64位代理。在注册标记为COMVisible的.NET类时,应该有类似的功能来创建代理。

64位COM接口将包含在自动生成的64位代理DLL中,因此这并不违反流程中所有模块的位必须相同的规则。