我有一个用于封装本地32位dll的C++/CLI程序集。
该程序集既可从.Net使用,也可从COM(office)使用。
现在我有一个客户正在运行64位office。
是否可能创建一个C++/CLI程序集,该程序集使用本地32位dll并导出64位com接口?
该程序集既可从.Net使用,也可从COM(office)使用。
现在我有一个客户正在运行64位office。
是否可能创建一个C++/CLI程序集,该程序集使用本地32位dll并导出64位com接口?
在Windows上,不可以在一个进程中混合使用不同位数的代码。您需要将32位代码强制放入单独的进程或转换该DLL。
后者可能可以通过使用COM+(或基本相同的DCOM)来实现。这是我们通常用于本地C ++代码的方法。我不确定对于C ++ / CLI程序集来说有多容易。
某种程度上,是的。
继续将C++/CLI代码编译为32位,以便使用C++互操作性使用本机库。
然后,您将需要在作为Office 64插件时将其配置为加载为进程外COM服务器。对于本机COM代码,midl会自动生成64位代理。应该有一些类似的功能来创建代理,当注册标记为COMVisible
的.NET类时。
64位COM接口将包含在自动生成的64位代理DLL中,因此这不违反进程中所有模块的位数必须相同的规则。