5

我在尝试注册 DLL 时遇到问题。我的操作系统是 Windows 7 (x64)。

我以两种不同的方式做到这一点:

1) 使用 regsvr32。我收到消息“DllRegisterServer ... succeedeed”,但在注册表中找不到我的 CLSID。(并且尝试使用此 CLSID 创建组件实例时出现“类未注册”错误)。在这种情况下,我知道永远不会调用 DllRegisterServer(因为我在此函数的开头创建了一个文本文件,但它不是创建)。

2) 显式加载我的 DLL 并调用 DllRegisterServer。在这种情况下,DllRegisterServer 返回 S_OK,但我仍然无法在注册表中找到我的 CLSID 并得到“类未注册”错误。

我确定代码是正确的(因为它不仅在我的操作系统上工作),所以问题似乎出在操作系统上。有没有人遇到过这样的问题?

4

3 回答 3

1

http://msdn.microsoft.com/en-us/library/aa384232(v=vs.85).aspx应该解释一下

根据您的 dll 是 32 位还是 64 位,注册表项会在不同的位置创建

于 2011-06-25T17:34:46.367 回答
0

以管理员身份运行命令行工具,然后运行注册命令 regsvr32

于 2013-07-12T11:25:25.943 回答
0

刚刚解决了一个相同的问题。我已经手动添加到现有的 32 位 COM 新接口、实现 (MyNewClass) 和 rgs 文件。但是当我使用 SysWow64\regsvr32.exe 成功注册我的 COM 时,我注意到我的 ProgId/CLSID 没有出现在 HKCR\CLSID 或 HKCR\Wow6432Node\CLSID 下

所以,实际上我错过了几件事:

  1. 我必须在 MyApp.cpp 文件的 BEGIN_OBJECT_MAP 下添加 OBJECT_ENTRY
  2. 并将 DECLARE_REGISTRY_RESOURCEID(IDR_xxx) 添加到 MyNewClass.h 文件

资源.h

定义 IDR_xxx 105

现有的Com.rc

IDR_xxx REGISTRY DISCARDABLE "MyNewClass.rgs"

于 2011-09-14T20:37:56.420 回答