首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.net本机如何扩展用于node.js?

.net本机如何扩展用于node.js?
EN

Stack Overflow用户
提问于 2018-03-22 02:57:14
回答 2查看 0关注 0票数 0

我想在node.js中使用.net dll。这是否意味着我需要用c / c ++使用'clr hosting'来提供这些dll

更正做到这一点的文章正义:它建议更改选项设置为“无公共语言运行库支持” 只为文件SharpAddon.cpp添加将CLR支持启用(对于CLR项目的默认值),那么其他的.cpp-文件,这意味着实际上可以使用来自其他.cpp文件的.net dll。

这个问题实际上是在Node.js / serverside javascript使用.NET DLL的一个副本,当时甚至没有一个本地Windows节点端口,所以时间可能已经改变了,尽管谷歌让我怀疑它。

EN

Stack Overflow用户

发布于 2018-03-22 11:30:01

binding.gyp文件设置正确时,node-gyp可以自动执行下面的手动步骤。看到这个简单的过程的答案

事实证明,这很容易。在与CLR托管挣扎并在主机中获取数据一段时间后,事实证明,实际上为节点扩展启用/ clr没有问题(到目前为止)。就是这样:

  • 请按照http://nodejs.org/api/addons.html上的说明生成项目文件
  • 在Visual Studio中打开生成的.sln(我在VS 2010中)并在项目设置中启用/ clr
  • 现在它可能不会生成,并且您必须让 - 在这种情况下实际上非常有用 - 错误消息指导您与/ clr冲突的标志

我不得不改变的标志使它工作:

  • 禁用/ EHsc(C ++异常)
  • 禁用/ RTC1和/ RTCsu
  • 发布:将/ MT更改为/ MD
  • 调试:将/ MTd更改为/ MDd
  • 发布:更改/ GR-到/ GR

然后你可以像这样混合管理和非托管代码,引用你的.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"));
}

刚刚发现了一个简单的howto链接:http : //joseoncode.com/2012/04/10/writing-your-first-native-module-for-node-dot-js-on-windows/

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档