我使用这些指令http://msdn.microsoft.com/en-us/library/bb250489(v=vs.85).aspx,用ATL创建了简单的BHO。我正在创建dll的64位和32位dll。当我尝试使用regsvr32取消注册32位版本后的64位dll时,会出现问题,我得到的是0x8002801c错误。(反之亦然,同样的问题也会发生)。我增加了图像。
我认为这与TypeLib注册有关,因为我对64位和32位做了相同的操作,没有任何差别,在注册32位后,我有这两个键。
HKEY_CLASSES_ROOT\TypeLib{5EA5008F-7766-499D-B4B0-9A671C752333}\1.0\0\win32默认值= C:\programming\vswork\testfile\test64atlcom\Debug\test64atlcom.dll
HKEY_CLASSES_ROOT\Wow6432Node\TypeLib{5EA5008F-7766-499D-B4B0-9A671C752333}\1.0\0\win32默认值= C:\programming\vswork\testfile\test64atlcom\Debug\test64atlcom.dll
为什么会发生这种情况,如何解决呢?


发布于 2014-06-05 10:37:58
错误代码是TYPE_E_REGISTRYACCESS。VS项目的一个典型问题是默认模板没有x64配置,而且它从Win32复制不会更新MIDL设置中的目标环境。

x64使用Win32构建将加载并运行,但是它的注册仍然会将类型库注册为32位,并导致32/64位构建冲突。
因此,您需要确保Win32中的类型库构建为目标32位,而x64构建具有目标64位环境。
https://stackoverflow.com/questions/24055532
复制相似问题