Создать собственное расширение node.js в Windows
Я пытаюсь получить доступ к конкретному вызову Windows API изнутри приложения node.js. Я считаю, что лучший способ сделать это - создать собственное расширение / дополнение к узлу, которое мне может потребоваться в моем приложении node.js, и вызывать из JavaScript.
Где я могу найти ресурсы о том, как на самом деле скомпилировать этот тип исполняемого файла? Я могу найти инструкции по его написанию, но все инструкции по сборке, похоже, для Linux. Я в порядке с компиляцией через g++ на mingw, мне не нужно использовать Visual Studio. Кроме того, где я могу найти заголовочные файлы, которые мне нужны для компиляции расширения?
2 ответа
Я думаю, что node-ffi поможет вам. Все просто и работает.
npm install ffi
var FFI = require('ffi');
function TEXT(text){
return new Buffer(text, 'ucs2').toString('binary');
}
var user32 = new FFI.Library('user32', {
'MessageBoxW': [
'int32', [ 'int32', 'string', 'string', 'int32' ]
]
});
var OK_or_Cancel = user32.MessageBoxW(
0, TEXT('I am Node.JS!'), TEXT('Hello, World!'), 1
);
Это сейчас устарело. Сегодня используйте nan и node-gyp для написания и создания собственных модулей, которые работают на разных платформах.
Я сам прошел через эту боль. Вот руководство, которое помогло мне заставить его работать. (PDF) Помните, что поскольку Node теперь официально поддерживается в Windows, Visual Studio является рекомендуемым средством сборки для Node в Windows.
В принципе:
- Загрузите и соберите исходный код Node. (См. PDF)
- Создайте новое решение VC++ Win32 в VS, выбрав DLL в качестве типа приложения в следующем мастере. Убедитесь, что ATL/MFC не проверен.
- Напишите свой аддон. В качестве примера, вот тот, который я написал, который получает текущие настройки DNS Windows. В частности, файл настроек проекта (vcxproj) будет интересен, так как одна из самых сложных частей - это получить все ссылки на библиотеки / настроить пути. Вы можете позаимствовать мой конфиг и заменить
D:\node\
с местоположением вашего репо Node.