2

我正在尝试在 Visual C++ 2010 (Express) 中开发一个 COM 组件,我希望能够从 Visual C# 2010 (Express) 程序中使用它。

我的 COM DLL 还没有完成,但是我定义了DllRegisterServerDllUnregisterServer函数,它们在 HKEY_CLASSES_ROOT 和子键中写入了很多东西。其中,我有以下键:

HKEY_CLASSES_ROOT\My.Components.1\CLSID
    Default Value: {DB05EA30-0320-4D40-A530-6DEAD03D3850}

HKEY_CLASSES_ROOT\CLSID\{DB05EA30-0320-4D40-A530-6DEAD03D3850}
    Default Value: My Components
    Sub Key: InprocServer32
        Default Value: Absolute path of the .dll
        Threading Mode: Apartment
    Sub Key: ProgID
        Default Value: My.Components.1
    Sub Key: TypeLib
        Default Value: {DB05EA31-0321-4D41-A531-6DEAD03D3851}
    Sub Key: Version
        Default Value: 1.0

HKEY_CLASSES_ROOT\TypeLib\{DB05EA31-0321-4D41-A531-6DEAD03D3851}
    Sub Key: 1.0
        Sub Key: 0
            Sub Key: win32
                Default Value: Absolute path of the .tlb

Microsoft JScript 能够尝试实例化 COM 对象,尽管由于工厂不完整,所以所做的只是输出DllGetClassObject的错误代码。

另一方面,Visual C# 2010(或至少添加引用...窗口)似乎没有注意到已注册 COM 对象的存在,该对象未显示在列表中。我很清楚这些对象只是已安装 COM 对象的一个​​子集。

COM 对象会在什么时候出现?我错过了什么?

编辑

我知道Browse选项卡,但我的印象是一流的注册 COM 对象应该在没有明确搜索它们的情况下显示出来,但也许情况并非如此。

4

1 回答 1

3
Sub Key: 1.0

必须先分配此键的默认值,然后类型库才能显示在 COM 选项卡中。它必须包含类型库的描述。样板短语是“Acme Foo Type Library 1.0”,其中“Acme”是您的公司名称,“Foo”是服务器或产品名称。

使用 Browse 选项卡是我的重中之重,COM 选项卡太慢了。你会发现:)

于 2013-07-01T11:03:58.617 回答