我有一个在 32 位机器上开发的使用 Flash10c.ocx 的 WPF 应用程序。我不必在我的开发机器上注册 ocx,我只需安装最新的闪存,添加引用并开始编码。在 64 位系统上测试时,我得到了旧的“类未注册”,我认为这意味着我需要 regsvr ocx。是否可以将 32 位 ocx(我很确定它是 32 位,因为它位于开发系统上的 C:\Windows\System32\Macromed)到 64 位系统并注册它?
更新:regsvr32 /i flash10c.ocx 出错,并显示“模块 flash10c.ocx 已加载,但对 DllRegisterServer 的调用失败,错误代码为 0x80004005”
更新 2:我已经放弃了这一点并决定仅在 32 位系统上运行 Flash。如果有人有更好的答案,我很想听听,但我将当前的建议标记为已回答,以对我的努力给予应有的认可。
它不适合您的原因是您的 WPF 应用程序以 64 位运行。
.NET 应用程序能够以 32 位或 64 位运行; CLR 会将您的应用程序 JIT 到应用程序运行的任何架构上 - 在本例中为 64 位。
除非您现在希望 64 位应用程序加载 32 位 dll。这不可能。 64位进程只能加载64位dll。 32位进程只能加载32位dll。无论对 COM 对象注册进行多少摆弄,都不会改变这一点;这不是缺少注册表项的问题。
Adobe Flash 仅作为 32 位 dll 提供。 Adobe 现在没有(希望永远不会)有 64 位版本。
为了让您的 WPF .NET 应用程序加载 32 位 flash dll,它需要作为 32 位进程运行。在 Visual Studio 的构建配置中,有一种方法可以强制您的 .NET 应用程序仅定位x86
, 而不是Any CPU
.
CPU目标的选择是:
就其价值而言,Flash 也没有 Itanium 版本。
See StackOverflow:Visual Studio“任何 CPU”目标 https://stackoverflow.com/questions/516730/visual-studio-any-cpu-target有关目标 cpu 的更多讨论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)