当使用本机插件复制项目到服务器机器时,“指定的模块找不到”

我创build了一个本地插件节点,一个64位DLL,用/clr标志编译访问另一个.net dll。

所有在我的开发框(Windows 7,64位)上很好地工作,但是当整个目录复制到服务器框(Windows Server 2008 R2,64位,.net 4.0客户端configuration文件和扩展安装),一个

 var myaddon = require('./build/Release/myaddon'); 

产生以下错误:

 module.js:485 process.dlopen(filename, module.exports); ^ Error: The specified module could not be found. C:\Users\x\build\Release\myaddon.node at Object.Module._extensions..node (module.js:485:11) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:362:17) at require (module.js:378:17) 

我知道它成功地find了文件'myaddon.node',因为当我稍微改变require语句来指向一个不存在的文件时,它会抱怨一个不同的错误信息。

没有我的要求声明,节点启动罚款。

为什么错误以及如何解决?

从头开始一个插件为debugging目的没有/clr – 哪些工作正常 – 我想通了。

  • 设置'/ clr'标志强制你改变'/ MT'(运行库的静态链接)到'/ MD'(rt库的dynamic链接)
  • dynamic链接意味着C ++ dll需要安装在目标机器上

在我的情况下,这意味着在服务器上安装Microsoft Visual C ++ 2010 SP1可再发行组件包(x64) 。