Возможно ли использовать C++ двоичный код в chrome extension?Есть ли способ использовать C++ в chrome extension?
ответ
Да, как и в других браузерах, вы можете написать плагин NPAPI, который будет общаться с вашим расширением.
См соответствующей странице для Google at code.google.com
и более общее описание at wikipedia
NPAPI осуждался от Chrome/Opera для соображений безопасности.
Вы по-прежнему можете использовать NPAPI, если вы настроили таргетинг на firefox, но если Firefox следует тренду, он может также отключить его в какой-то момент.
лучших вариантов у вас есть сегодня
Использование NaCl, если вы ориентируетесь только Chrome
Вы можете использовать вместо NativeClient (AKA NaCl, AKA PPAPI - Pepper Plugin API)
Весь код побежал внутри NaCl песочница, так что она безопасна, как расширение javascript.
Используйте asm.js, если таргетинг на все платформы
Использование Emscripten вы можете скомпилировать C код/C++ в оптимизированная JavaScript формат называется asm.js. Он разработан, чтобы иметь близкую характеристику, и теперь имеет decent support from grade-A browsers except Safari. Хотя производительность в Firefox лучше, чем Chrome на данный момент.
Основные производители браузеров также работают над новым стандартом под названием WebAssembly, который частично вдохновлен asm.js, но не готов к прайм использования в качестве этой статьи
Что такое поддержка браузера PPAPI? Является ли это только для Chrome и, следовательно, имеет мало шансов быть использованным другими браузерами в будущем? – Pacerier
PPAPI также поддерживается Opera, поскольку теперь он основан на Chrome. – Eduardo
Обратите внимание, что NPAPI не намного лучше, он поддерживается только Safari/Firefox, так как ни IE, ни Chrome его не поддерживают. IE использовал ActiveX, который также устарел для Microsoft Edge. Полагаю, создание встроенных плагинов для браузера не является чем-то легко выполнимым кросс-браузером. – Eduardo
Как сказал верхняя, вы можете использовать NaCl для хрома и asm.js с Emscripten для всех платформ, но это обратная инженерия проще, чем двоичная. Теперь существует среднее решение: webassembly - байт-код LLVM, встроенный в браузер, поддерживается большинством современных браузеров https://caniuse.com/#feat=wasm. Итак, Emscripten может скомпилировать C++ для wasm, в основном это быстрее, чем asm.js.
Тогда почему бы не написать его прямо как NPAPI в первую очередь? – Pacerier