首页 > 解决方案 > 迁移到 X64 后:CComPtr CoCreateInstance 失败,rc=0x80040154 类未注册

问题描述

迁移到 X64 后:CComPtr CoCreateInstance 失败,rc=0x80040154 类未注册

IDL 文件未更改

//import "objidl.idl";
//import "ICmConnection.idl";
//import "ICmNamedObject.idl";
//import "ipositio.idl";
//import "oaidl.idl";
//import "ocidl.idl";
import "objidl.idl";
import "ICmConnection.idl";
import "ICmNamedObject.idl";
import "ipositio.idl";


[ 
  uuid (96c64c60-24f6-99d0-9f8c-0020af9099cc),
  //uuid (E2123FC4-0D5D-4A8F-94BC-6582D9F84109),
  object, 
  pointer_default(unique)
]
interface ICMTopologieDatabase : IUnknown  /*IDispatch */{
  HRESULT GetObjects      ( [in] unsigned classID, [out] ICMPosition** devices   );
  HRESULT NewObject       ( [in] unsigned classID, [out] ICmNamedObject** device );
  HRESULT getNamedDevice2 ( [in] LPSTR name      , [out] ICmNamedObject** device );
  HRESULT InitializeClient();
}

当我在寡妇注册表中检查 uuid 96c64c60-24f6-99d0-9f8c-0020af9099cc 时,我添加了 MIDL 编译器选项 /env x64 /x64 for X64
,它根本没有找到。

当我检查 MIDL 编译器生成的文件时,我可以看到它可能不是正确的,切换到 X64

/* Compiler settings for D:\Home\Atiras\V77Ma_64Bit_Branch001\Src\Cm\NmsCmCommon\ITopolog.idl:
    Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.00.0603 
    protocol : dce , ms_ext, c_ext, robust
    error checks: none
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/

是否可以使用此 MIDL 编译器设置未创建任何注册表并且未注册类以及正确的开关是什么?

标签: visual-studio-2015commigration64-bitmiddleware

解决方案


推荐阅读