È possibile utilizzare binario C++ nell'estensione di Chrome?C'è un modo per usare C++ nell'estensione di Chrome?
risposta
Sì, come con altri browser, è possibile scrivere un plug-in NPAPI che comunicherà con la propria estensione.
vedi relativo di Google pagina at code.google.com
E una descrizione più generica at wikipedia
NPAPI è stata sconsigliata da Chrome/Opera per problemi di sicurezza.
È ancora possibile utilizzare NPAPI se si sta mirando a Firefox, ma se Firefox segue la tendenza potrebbe disabilitarlo a un certo punto.
Le opzioni migliori che hai oggi sono
Usa NaCl se si prendono di mira solo Chrome
è possibile utilizzare invece NativeClient (AKA NaCl, AKA PPAPI - Pepper Plugin API)
Tutto il codice ha funzionato all'interno di NaCl è sandboxed quindi è sicuro come le estensioni javascript.
Utilizzare asm.js se come obiettivo tutte le piattaforme
Usando Emscripten è possibile compilare il codice C/C++ in altamente ottimizzato javascript formato chiamato asm.js. È progettato per avere prestazioni quasi native e al momento dispone di decent support from grade-A browsers except Safari. Sebbene le prestazioni siano migliori in Firefox rispetto a Chrome al momento.
Maggiore produttori di browser stanno anche lavorando su un nuovo standard chiamato WebAssembly che è parzialmente ispirato asm.js, ma non è pronto per l'uso come primo di questo articolo
Qual è il supporto del browser per PPAPI? È una cosa solo per Chrome e quindi ha poche possibilità di essere utilizzato da altri browser in futuro? – Pacerier
PPAPI è anche supportato da Opera poiché ora è basato su Chrome. – Eduardo
Si noti che NPAPI non è molto migliore, a questo punto è supportato solo da Safari/Firefox poiché né IE né Chrome lo supportano più. IE ha utilizzato ActiveX, anch'esso obsoleto per Microsoft Edge. Costruire plugin per browser nativi non è qualcosa di cross-browser facilmente realizzabile, immagino. – Eduardo
Come detto in alto, è possibile utilizzare NaCl per Chrome e asm.js con Emscripten per tutte le piattaforme, ma il reverse engineering è più semplice di quello binario. Ora c'è una soluzione intermedia: webassembly - il bytecode LLVM integrato nel browser è supportato dalla maggior parte dei browser moderni https://caniuse.com/#feat=wasm. Quindi Emscripten può compilare C++ in wasm, principalmente è più veloce di asm.js.
Quindi perché non scrivere direttamente come NPAPI in primo luogo? – Pacerier