我们有专门为Reader X / XI设计的托管C ++ Adobe Reader插件。它在Windows 7中运行良好,但在Windows XP上它会引发COM错误 - 类没有注册。
奇怪的是,这只发生在我们将项目从vs2005项目更新到vs2010之后。旧的vs2005插件工作得很好。任何人都有任何线索,为什么会这样?当我们搬到2010年时,我们只使用了标准项目自动升级。所有其余代码都是相同的。
修改:有关该问题的更多说明
插件DLL本身加载得很好。只有当我们尝试通过COM互操作加载.Net 4 dll时,才会遇到异常。
以前,我们尝试加载的dll是用.net 2.0编写的,并且在Windows XP中加载得很好。但.Net 4 dll只会在Win7中加载。请注意,.Net 3.5似乎就像2.0一样工作。它只有.net 4中断(我们将完全相同的代码重新编译为2.0,3.5和4.0以进行检查)。
答案 0 :(得分:0)
原来问题是Adobe的保护模式和尝试通过COM互操作加载.Net 4 DLL的组合,但仅限于Windows XP。
奇怪......改变任何变量,一切正常。 .Net 3.5和2.0都可以在保护模式下正常加载。 Windows 7在保护模式下加载.Net 4 dll。
在Adobe for Windows XP中关闭保护模式可修复此问题,以便DLL加载正常。
我希望这可以帮助遇到此问题的其他人。