64位Firebreath NPAPI插件未在Windows中注册



我已经使用prep2015x64.cmd.生成了一个测试插件

prep2015x64.cmd内容在下方给出

echo off & setlocal enableextensions enabledelayedexpansion
set _FB_GEN="Visual Studio 14 Win64"
call "%~d0%~p0common.cmd" %*
if %errorlevel% == 2 exit /b 1
call "%~d0%~p0winprep.cmd"

插件是完全生成的,为了确保它是64位的,我用dumpbin/Headers交叉检查了它,它给出了DLL是64位

FILE HEADER VALUES
            8664 machine (x64)
               9 number of sections
        56DFCDF9 time date stamp Wed Mar  9 12:47:13 2016
               0 file pointer to symbol table
               0 number of symbols
              F0 size of optional header
            2022 characteristics
                   Executable
                   Application can handle large (>2GB) addresses
                   DLL

然后,我尝试注册它,在C:\Windows\SysWOW64中使用提升的命令提示符。我使用以下命令注册

C:WindowsSysWOW64> C:WindowsSysWOW64regsvr32.exe C:workspacefirebreathbuildbinTestPluginReleaseTestPlugin.dll 

它给了我一个错误:

   The Module "C:workspacefirebreathbuildbinTestPluginReleaseTestPlugin.dll"
 may not be compatible with version of Windows that you are running. 
Check if the module is compatible with an X86(32-bit) or X64(64-bit) version of regsvr32.exe

我使用的是Windows7,64位操作系统,所以我真的很困惑这里出了什么问题。是插件生成还是其他什么。有没有其他方法可以注册插件。

提前谢谢。

问题很可能是您使用的是32位版本的regsvr32;syswow64代表"Windows64上的系统Windows",换句话说,它是Windows64位上的32位窗口。实际上(具有讽刺意味的是(您想要使用c:windowssystem32regsvr32.exe文件。

为了安全起见,只需使用路径中的一个,而不是指定一个特定的,你就会得到正确的(除非计算机的配置一团糟(。如果是32位DLL,64位版本将自动链接到32位版本,但如果是64位DLL,32位版本将不起作用。

以下是我所做的工作。我使用了Visual Studio 2008。

  1. 使用fbgen.py生成插件
  2. 运行prep2008x64.cmd.构建文件,vcproj将在该步骤中生成
  3. 在任何编辑器中打开Plugin.vcproj文件,并将/machine:X86替换为/machine:X64
  4. 打开vcproj,然后使用"C:\Program Files(x86(\Microsoft Visual Studio 9.0\VC\almfc\lib\aamd64"添加"其他库依赖项"。这是ATL库所必需的
  5. 我不确定它是与32位库链接还是与64位库链接。因此,我在链接器输入中明确添加了"附加依赖项",下面列出了

    "C:\Program Files\Microsoft SDK \Windows\v6.0A\Lib\x64\Kernel32.Lib"C:\Program Files\Microsoft SDK \Windows\v6.0A\Lib\x64\User32.Lib"C:\Program Files\Microsoft SDK \Windows\v6.0A\Lib\x64\Gdi32.Lib"C:\Program Files\Microsoft SDK \Windows\v6.0A\Lib\x64\WinSpool.Lib"C:\Program Files\Microsoft SDK \Windows\v6.0A\Lib\x64\Shell32.Lib"C:\Program Files\Microsoft SDK \Windows\v6.0A\Lib\x64\Ole32.Lib"C:\Program Files\Microsoft SDK \Windows\v6.0A\Lib\x64\OleAut32.Lib"C:\Program Files\Microsoft SDK \Windows\v6.0A\Lib\x64\Uuid.Lib"C:\Program Files\Microsoft SDK \Windows\v6.0A\Lib\x64\ComDlg32.Lib"C:\Program Files\Microsoft SDK \Windows\v6.0A\Lib\x64\AdvAPI32.Lib"C:\Program Files\Microsoft SDK \Windows\v6.0A\Lib\x64\Psapi.Lib"….\ActiveXCore\Debug\ActiveXCore.lib"….\PluginCore\Debug\PluginCore.lib"PluginAuto\Debug\PPL_PluginAuto.lib"….\NpapiCore\Debug\NpapiCore.lib"….\ScriptingCore\Debug\ScriptingCore.lib"….\boost\libs\thread\Debug\boost_thread.lib"….\boost\libs\system\Debug\boostrongystem.lib"C:\Program Files\Microsoft SDK \Windows\v6.0A\Lib\x64\WinInet.Lib">

  6. 将Linker Advanced中的"目标机器"从"未设置"更改为"MachineX64(/Machine:X64(">

  7. 构建插件
  8. 使用普通cmd提示符(非提升的cmd提示符(和普通regsvr32.exe(非特定于C:\Windows\SysWOW64(注册插件C: \Users\Username>regsvr32.exe npPlugin.dll
  9. 尝试使用Firefox 64位版本44.0.2,但没有成功。我认为这是插件的问题。但没有,我后来从https://sourceforge.net/projects/crportable/files/。Chromium 44以下版本仅支持npapi插件
  10. 在中安装Chromium Portable和已启用的npapi插件chrome://flags后来推出了FBControl.htm。终于成功了

相关内容

  • 没有找到相关文章

最新更新