gpt4 book ai didi

.net - .NET COM 对象迁移到 64 位

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:02:16 26 4
gpt4 key购买 nike

我们有使用多个 COM 对象的 C++ 应用程序。 COM 对象基于 .NET(使用 COM Interop)。

我需要将应用程序迁移到 64 位。我特别需要 C++ 应用程序是 64 位的。我不想将所有 .NET com 对象重新编译为 64 位并提供两组 DLL(32 位和 64 位)。

我正在调查并发现我可以使用(注册表中的 DllSurrogate)在 32 位代理进程中加载​​ 32 位 COM Dll。我知道该怎么做,但这意味着所有 COM 对象都将脱离进程。

在 C++ 中我有代码:CoCreateInstance(CLSID_SomeClass, NULL, CLSCTX_INPROC_SERVER, IID_SomeInterface, (void**)&pobj);

它运行良好,但一旦我切换到 CLSCTX_LOCAL_SERVER(并为 DllSurrogate 添加注册表项),它就找不到接口(interface)(错误 0x80004002)。我检查了注册表,发现在注册 .NET COM DLL 时,它添加了 ClsID 注册表项,但没有添加 Interface 和 TypeLib 注册表项。

问题是,如何为 .NET COM 创建这些注册表项?

问候,维克多

最佳答案

如果您希望一切都在进程中,那么应用程序和 COM 对象都必须是 64 位的。参见 Can I load a 32 bit DLL into a 64 bit process on Windows? .

关于.net - .NET COM 对象迁移到 64 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2931601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com