2016-03-09 3 views
0

Я создал тестовый плагин с использованием prep2015x64.cmd.64-битный Firebreath Плагин NPAPI не регистрируется в Windows

prep2015x64.cmd содержание приведены ниже

echo off & setlocal enableextensions enabledelayedexpansion 
set _FB_GEN="Visual Studio 14 Win64" 
call "%~d0%~p0\common.cmd" %* 
if %errorlevel% == 2 exit /b 1 
call "%~d0%~p0\winprep.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:\Windows\SysWOW64> C:\Windows\SysWOW64\regsvr32.exe C:\workspace\firebreath\build\bin\TestPlugin\Release\TestPlugin.dll 

Это дает мне ошибку:

The Module "C:\workspace\firebreath\build\bin\TestPlugin\Release\TestPlugin.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 

Я использую Windows 7, 64 разрядная операционная система, так что я действительно запутался, что происходит не так Вот. Это плагин поколения или что-то еще. Есть ли альтернативный способ регистрации плагина.

Заранее спасибо.

ответ

0

Вот что я сделал, чтобы заставить его работать. Я использовал Visual Studio 2008.

  1. Сформирован плагин с помощью fbgen.py
  2. Запуск prep2008x64.cmd. На этом этапе создаются файлы сборки и vcproj.
  3. Открыть Plugin.vcproj файл в любом редакторе и заменить/машина: X86 с/машиной: X64
  4. Открыть vcproj, а затем добавить "Дополнительные зависимости библиотеки" с «C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ atlmfc \ Lib \ amd64" . Это необходимо для библиотек ATL.
  5. Я не был уверен, связано ли это с 32-битными библиотеками или 64-битными библиотеками. Таким образом, я явно добавил «Дополнительные зависимости» в вводе компоновщика со следующим ниже списком

    «C: \ Program Files \ Microsoft SDK \ Windows \ v6.0A \ Lib \ x64 \ Kernel32.lib" "C: \ Программные файлы \ Microsoft SDK \ Windows \ v6.0A \ Lib \ x64 \ User32.lib " " C: \ Program Files \ Microsoft SDK \ Windows \ v6.0A \ Lib \ x64 \ Gdi32.lib " " C: \ Программные файлы \ Microsoft SDK \ Windows \ v6.0A \ Lib \ x64 \ WinSpool.lib " " C: \ Program Files \ Microsoft SDK \ Windows \ v6.0A \ Lib \ x64 \ Shell32.lib " " C: \ Программные файлы \ Microsoft SDK \ Windows \ v6.0A \ Lib \ x64 \ Ole32.lib " " C: \ Program Files \ Microsoft SDK \ Windows \ v6.0A \ Lib \ x64 \ OleAut32.lib " " C: \ Программные файлы \ 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" ".... \ подталкивание \ ЛИЭС \ система \ Debug \ boost_system.lib" "C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Lib \ x64 \ WinInet.lib"

  6. Изменено «T Arget Machine»в Linker Дополнительно от "не указан" на "MachineX64 (/ MACHINE: X64)"

  7. Построил плагин
  8. Registered плагин с помощью обычного CMD строки (не повышен CMD подсказка) и нормальный (regsvr32.exe НЕ определенно, как C: \ Windows \ SysWOW64) C: \ Users \ Username> regsvr32.exe npPlugin.dll
  9. Пробовал с 64-разрядной версией Firefox версии 44.0.2, но это не сработало. Я думал, что это проблема с плагином. Но нет, я позже загрузил ChromiumPortable_43.0.2357.18.paf.exe (64 бит) из https://sourceforge.net/projects/crportable/files/. Версия Chromium ниже 44 поддерживает только плагины npapi.
  10. Установите Chromium Portable и включите плагины npapi в флагах chrome: //, а затем запустите FBControl.htm. Наконец это сработало ..... !!!
0

Скорее всего, проблема в том, что вы используете 32-разрядную версию regsvr32; syswow64 означает «системная Windows на Windows 64», другими словами, это 32-битные окна на 64-битных Windows. Вы на самом деле (по иронии судьбы) хотите использовать файл c:\windows\system32\regsvr32.exe.

Чтобы быть в безопасности, используйте только тот, который находится на пути, вместо указания конкретного, и вы всегда получите правильный (если конфигурация компьютера не была испорчена). 64-разрядная версия будет автоматически подключаться к 32-разрядной версии, если это 32-разрядная DLL, но 32-разрядная версия просто не работает, если это 64-разрядная dll.

+0

Спасибо за ваш ответ. Я уже пробовал использовать regsvr32.exe на обычной подсказке cmd, но все же у меня такая же ошибка. Есть ли что-нибудь, что я должен проверить или настроить в firebreath, чтобы заставить его работать должным образом, потому что плагин построения для 32 бит работает полностью нормально. Только 64-битный плагин имеет проблемы. – TechTotie

+0

У меня нет никаких проблем, но я не создал vs2015, поэтому не знаю. если он говорит, что модуль может быть несовместимым, то это звучит как проблема с компилятором, поэтому я не думаю, что он напрямую связан с кодом firebreath. если что-то может быть что-то cmake неправильно настроено – taxilian

+0

Еще раз спасибо за ваш ответ ... Я попробовал что-то новое сейчас. Я построил плагин 64 бит firebreath с prep2008x64.cmd, а затем создал плагин firebreath с Visual Studio 2008. Теперь я могу зарегистрировать плагин с нормальным regsvr32 из командной строки. Но когда я запускаю FBControl.htm в Mozilla Firefox (64 бит), я получаю «Плагин необходим для показа этого содержимого». Я не могу понять, что может быть проблемой сейчас. – TechTotie

Смежные вопросы