[英].net native extension for node.js
我想在node.js中使用.net dlls。 这是否意味着我需要使用'clr hosting',一个la来使用c / c ++制作这些dll
不幸的是,在github上
创建一个nodejs native .Net扩展的例子有点令人失望,只需向下滚动到最后一步
将“公共语言运行时支持”选项更改为“无公共语言运行时支持”
而且你知道我的意思。
更正做到这一点的文章正义:它表明只改变了文件选项设置为“无公共语言运行库支持” SharpAddon.cpp
,所以其他的.cpp -文件添加将CLR支持启用(默认为CLR项目) ,这意味着您实际上可以从其他.cpp文件中使用.net dll。
这个问题实际上是在Node.js / serverside javascript中使用.NET DLL的重复,它是在甚至没有本地Windows节点端口的时候编写的,所以时间可能已经改变,尽管谷歌让我怀疑它。
更新 :当正确设置binding.gyp
文件时,node-gyp可以自动执行以下手动步骤。 有关此简化程序,请参阅此答案 。
事实证明这很容易。 在使用CLR托管并将数据输入和输出主机一段时间后,事实证明你实际上可以为你的节点扩展启用/ clr没问题 (到目前为止)。 这是如何做:
我必须更改标志才能使其工作:
然后你可以混合这样的托管和非托管代码,引用你的.net dll。
#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"));
}
更新刚刚发现此链接的简单方法: http : //joseoncode.com/2012/04/10/writing-your-first-native-module-for-node-dot-js-on-windows/
听起来像edge.js是iisnode作者的新答案:
Edge.js支持使用C#和.NET,而不是编写本机node.js扩展
这些天,有cmake-js和node-addon-api使事情变得更容易,加上node-addon-api的ABI意味着当与更新版本的Node.js一起使用时,不需要重新编译模块。
有关简短教程,请参阅此答案: https : //stackoverflow.com/a/54339042/709537
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.