C++/CLI 64位 COM

3
我有一个用于封装本地32位dll的C++/CLI程序集。
该程序集既可从.Net使用,也可从COM(office)使用。
现在我有一个客户正在运行64位office。
是否可能创建一个C++/CLI程序集,该程序集使用本地32位dll并导出64位com接口?
2个回答

2

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

后者可能可以通过使用COM+(或基本相同的DCOM)来实现。这是我们通常用于本地C ++代码的方法。我不确定对于C ++ / CLI程序集来说有多容易。


这正是我所怀疑的。谢谢。 - adrianm
由于Office/plugin接口已经是COM,因此最好在那里进行代理,而不是在C++/CLI和本地库之间引入新的翻译层。 - Ben Voigt

0

某种程度上,是的。

继续将C++/CLI代码编译为32位,以便使用C++互操作性使用本机库。

然后,您将需要在作为Office 64插件时将其配置为加载为进程外COM服务器。对于本机COM代码,midl会自动生成64位代理。应该有一些类似的功能来创建代理,当注册标记为COMVisible的.NET类时。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接