在Node.JS中运行.EXE

时间:2016-06-09 18:45:17

标签: javascript c++ node.js

我在Node.Js中运行外部可执行文件时遇到问题。 我的代码如下所示:

function executeFile(m, cb) {
    var urlTarget = "D:/thesis_node/upload/1.jpeg";
    var urlScene = "D:/thesis_node/upload/scene.jpeg";
    exec(__execDirName+'/FeatureDetection.exe', [urlTarget, urlScene], function(error, stdout, stderr) {
        if(error) return cb(error);
        cb(null, stdout);
    });
}

当我运行脚本时,它什么都没做,似乎它正在进行一个过程,但它永远不会结束。如果我使用命令提示符运行我的EXE文件,它的工作原理。 .exe文件返回值。我需要获得这个价值。

更新

实际上我开始认为在返回值时我的C ++代码可能出错了。

int main(int argc, char* argv[]) {
   int a = 5 + 10;
   return a; //Will this a can be received by Node.Js?
}

这是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

我不相信你提供你想要提供给子进程的参数作为child_process.exec()的第二个参数。相反,您将参数直接连接到exec()的第一个参数。

请参阅此处的文档:child_process.exec(command[, options][, callback])

具体做法是:

  

command< String>要运行的命令,使用以空格分隔的参数

因此,对于您的情况,您需要以下内容:

var cmdToExec = (__execDirName + '/FeatureDetection.exe' + ' ' + urlTarget + ' ' + urlScene);

exec(cmdToExec, function(){...});

或者,您可以尝试child_process.execFile(file[, args][, options][, callback])

execFile() 与您现在使用的exec()相关联,确实将参数数组作为第二个参数。