Sono completamente nuovo a Node JS ed Electron. Sto cercando di integrare C++ con HTML usando Electron e Node JS. Ho seguito alcuni esempi forniti da: GITChiamare Node Addons Nodo (C++) nell'elettrone
Quello che sto cercando di fare è chiamare la funzione nativa (ciao()) dal javascript della mia pagina web che viene caricata da electron. Ho usato node-gyp configure
per generare il mio file di soluzione di Visual Studio. (.sln). E più tardi ho compilato il mio codice con Visual Studio 2013 Express che genera correttamente il mio file .node nella cartella build \ Release.
Questo è il mio file index.js:
var addon = require('./build/Release/hello.node');
console.log(addon.hello());
quando ho semplicemente eseguire questo con node index.js
, mi sta dando il risultato desiderato:
world
Ma il problema è dotato di quando uso Electron. Sto usando electron binary (32 bit) per eseguire la mia pagina web.
Quello che segue è il mio main.js di file:
var app = require('app'); // Module to control application life.
var BrowserWindow = require('browser-window'); // Module to create native browser window.
require('crash-reporter').start();
var mainWindow = null;
// Quit when all windows are closed.
app.on('window-all-closed', function() {
if (process.platform != 'darwin') {
app.quit();
}
});
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
app.on('ready', function() {
mainWindow = new BrowserWindow({width: 1366, height: 768});
mainWindow.loadUrl("file://" + __dirname + "/HtmlFile/index.html");
mainWindow.on('closed', function() {
mainWindow = null;
});
});
Ora, questo è il mio javascript dove sto chiamando l'addon origini:
//************* My Functional logic **************
//************************************************
var addon = require('../build/Release/hello');
alert(addon.hello());
Quando ho eseguito questo o caricare questo pagina, ricevo il seguente errore:
Uncaught Error: %1 is not a valid Win32 application. ATOM_SHELL_ASAR.js:137
C:\Users\Administrator\Desktop\MyAPP\build\Release\hello.node
In seguito è il mio package.json
:
{
"name": "MyAPP",
"version": "1.0.0",
"description": "Desc",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"nan": "^2.0.9"
},
"gypfile": true
}
Questo è il mio binding.gyp
:
{
"targets": [
{
"target_name": "hello",
"sources": [ "hello.cc" ],
"include_dirs": [
"<!(node -e \"require('nan')\")"
]
}
]
}
sto correndo lo stesso problema quando si utilizza il --arch = ia32' bandiera 'Quando uso il' - arch = x64' flag Ricevo 'Unchaught Error: Il sistema non riesce a trovare il testo del messaggio per il numero di messaggio 0x% 1 nel file di messaggi per% 2.' Tuttavia, se eseguo il comando con' node./'print out" world "alla riga di comando come previsto, anche lo stesso codice funziona su MacOS in elettrone, quindi sembra essere un problema basato su elettroni di Windows – devonbleibtrey