Flash ocx“Class not registered”在Windows 7 x64上 [英] Flash ocx "Class not registered" on Windows 7 x64

查看:417
本文介绍了Flash ocx“Class not registered”在Windows 7 x64上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用32位机器上开发的Flash10c.ocx的WPF应用程序。我不必在我的开发机器上注册ocx,我只是安装了最新的闪存,添加了一个参考,并开始编码。当在64位系统上测试时,我得到了旧的类未注册,我认为我需要regsvr ocx。是否可以复制32位ocx(我敢肯定它的32位位于C:\ Windows \ System32 \ Macros在开发系统)到64位系统并注册它? p>

更新:regsvr32 / i flash10c.ocx错误与模块flash10c.ocx拉斯加载但调用DllRegisterServer失败,错误代码0x80004005

更新2:我放弃了这个,决定只在32位系统上运行Flash。如果有人有一个更好的答案,我想听到它,但我标记当前的建议作为回答给予应有的功劳。

解决方案

不适合你的原因是你的WPF应用程序是以64位的方式运行的。

.NET应用程序能够以32位或64位的方式运行;和CLR是JITing你的应用程序无论架构的应用程序正在运行 - 在这种情况下,64位。

除了你现在希望你的64位应用程序加载32位的DLL。这不可能。 64位进程只能加载64位dll。一个32位的进程只能加载32位的dll。用COM对象注册摆弄的数量不会改变这个;这不是缺少注册表项的问题。



Adob​​e Flash只能作为一个32位的dll。 Adobe现在没有(也绝不会)有一个64位版本。

为了让你的WPF .NET应用程序加载32位的flash dll,需要以32位进程运行。在Visual Studio的构建配置中,有一种方法可以强制你的.NET应用程序只针对 x86 ,而不是任何CPU



CPU目标的选择是:


  • 任何CPU

  • x86

  • x64

  • Itanium



  • Flash,因为它的价值,也没有安腾版本。



    请参阅 StackOverflow:Visual StudioAny CPUtarget 以获得更多关于目标cpus的讨论


    I have a WPF app that uses Flash10c.ocx developed on a 32 bit machine. I didn't have to register the ocx on my dev machine, I just installed the latest flash, added a reference and started coding. When testing on a 64 bit system I get ye old "Class not registered" which I think mean I need to regsvr the ocx. Is it Ok to just copy the 32 bit ocx (I'm pretty sure its 32 bit as its located in C:\Windows\System32\Macromed on the dev system) to a 64 bit system and register it?

    Update: regsvr32 /i flash10c.ocx errors out with "The module flash10c.ocx las loaded but the call to DllRegisterServer failed with error code 0x80004005"

    Update 2: I've given up on this and decided to run Flash on 32 bit systems only. If anyone has a better answer I'd like to hear it but I'm marking the current suggestion as answered to give due credit for the effort.

    解决方案

    The reason it's not working for you is that your WPF application is running as 64-bit.

    A .NET application is able to run as 32-bit or 64-bit; and the CLR is JITing your app to whatever architecture the application is running on - in this case 64-bit.

    Except you now want your 64-bit application to load a 32-bit dll. This is not possible. A 64-bit process can only load 64-bit dlls. A 32-bit process can only load 32-bit dlls. No amount of fiddling with COM object registration will change this; it's not a question of missing registry entries.

    Adobe Flash only comes as a 32-bit dll. Adobe does not now (and hopefully will never) have a 64-bit version.

    In order for your WPF .NET application to load the 32-bit flash dll, it needs to be running as 32-bit process. There is a way, in Visual Studio's build configuration, to force your .NET application to only target x86, rather than Any CPU.

    The choices of CPU targets are:

    • Any CPU
    • x86
    • x64
    • Itanium

    Flash, for what it's worth, doesn't have an Itanium version, either.

    See StackOverflow: Visual Studio "Any CPU" target for more discussion about target cpus.

    这篇关于Flash ocx“Class not registered”在Windows 7 x64上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆