开发者

C++/CLI 64-bit COM

I have 开发者_如何学Ca C++/CLI assembly that wraps a native 32-bit dll.

The assembly is used both from .Net and COM (office).

Now I have a customer that runs 64-bit office.

Is it possible to create a C++/CLI assembly that uses a native 32-bit dll and exports a 64-bit com interface?


No, you can't mix code with different bitness in one process on Windows. You need to force 32-bit code into a separate process or convert that DLL.

The latter can likely be achieved by using COM+ (or DCOM which is mostly the same). This is what we usually do with native C++ code. I'm not sure about how easy it is with C++/CLI assemblies.


In a manner of speaking, yes.

Continue to compile the C++/CLI code as 32-bit so it can use the native library using C++ interop.

Then you will have to configure it to load as an out-of-process COM server when acting as an Office 64 plugin. With native COM code, midl automatically generates the 64-bit proxy. There should be some similar capability to create a proxy when registering .NET classes marked COMVisible.

The 64-bit COM interface will be contained in the auto-generated 64-bit proxy DLL, so this doesn't violate the rule that the bitness of all modules in a process must be the same.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜