Ответ 1
Обновить: node -gyp автоматически выполнит шаги, указанные ниже, когда файл binding.gyp
настроен правильно. См. этот ответ для этой упрощенной процедуры.
Это оказалось довольно легко. После боев с хостингом CLR и получения данных в хосте и из него некоторое время оказывается, что вы действительно можете включить /clr для вашего расширения node без проблем (пока). Вот как:
- следуйте инструкциям http://nodejs.org/api/addons.html для создания файлов проекта.
- откройте созданный .sln в Visual Studio (я на VS 2010) и включите /clr в настройках проекта.
- теперь он, вероятно, не будет создан, и вы должны позволить - в этом случае на самом деле весьма полезно - сообщения об ошибках направляют вас к флагам, которые конфликтуют с /clr
Флаги, которые мне пришлось изменить, чтобы они работали:
- disable/EHsc (исключения С++)
- disable/RTC1 и /RTCsu
- Релиз: изменить /MT на/MD
- Отладка: изменение /MTd в/MDd
- Релиз: изменение /GR - to/GR
Затем вы можете смешать управляемый и неуправляемый код, как это, ссылаясь на ваши DLL файлы .net.
#pragma managed
#using <managed.dll>
void callManaged()
{
managed::Class1^ c1 = gcnew managed::Class1();
System::String^ result = c1->Echo("hola");
System::Console::WriteLine("It works: " + result);
}
#pragma unmanaged
Handle<Value> Method(const Arguments& args) {
HandleScope scope;
callManaged();
return scope.Close(String::New("world"));
}
Обновление Просто открыла эту ссылку с помощью простого howto: http://joseoncode.com/2012/04/10/writing-your-first-native-module-for-node-dot-js-on-windows/