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程序集有多容易。
答
以某种方式说话,是的。
继续编译C++/CLI代码为32位,因此它可以使用C++ interop使用本地库。
然后,您必须将其配置为在充当Office 64插件时作为进程外COM服务器加载。使用原生COM代码,midl会自动生成64位代理。在注册标记为COMVisible
的.NET类时,应该有类似的功能来创建代理。
64位COM接口将包含在自动生成的64位代理DLL中,因此这并不违反流程中所有模块的位必须相同的规则。
这就是我所怀疑的。谢谢 – adrianm 2010-09-03 10:00:30
由于Office/plugin接口已经是COM,所以不妨在C/C++和本地库之间引入新的转换层。 – 2010-09-03 14:21:25