Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Emscripten:如何构建C++;带有标题的项目 < P> >我想转换这个C++项目(脸谱网)< /P>_Javascript_C++_Node.js_Emscripten_Fasttext - Fatal编程技术网

Javascript Emscripten:如何构建C++;带有标题的项目 < P> >我想转换这个C++项目(脸谱网)< /P>

Javascript Emscripten:如何构建C++;带有标题的项目 < P> >我想转换这个C++项目(脸谱网)< /P>,javascript,c++,node.js,emscripten,fasttext,Javascript,C++,Node.js,Emscripten,Fasttext,我想在node.js中运行。我首先使用emmake make将其构建为一个,并获得链接的LLVM对象文件: -rw-r--r-- 1 loretoparisi staff 27536 30 Lug 10:20 args.o -rw-r--r-- 1 loretoparisi staff 78632 30 Lug 10:20 dictionary.o -rw-r--r-- 1 loretoparisi staff 23864 30 Lug 10:20 productq

我想在
node.js
中运行。我首先使用
emmake make
将其构建为一个,并获得链接的LLVM对象文件:

-rw-r--r--   1 loretoparisi  staff   27536 30 Lug 10:20 args.o
-rw-r--r--   1 loretoparisi  staff   78632 30 Lug 10:20 dictionary.o
-rw-r--r--   1 loretoparisi  staff   23864 30 Lug 10:20 productquantizer.o
-rw-r--r--   1 loretoparisi  staff   12120 30 Lug 10:20 matrix.o
-rw-r--r--   1 loretoparisi  staff    9132 30 Lug 10:20 qmatrix.o
-rw-r--r--   1 loretoparisi  staff   10532 30 Lug 10:20 vector.o
-rw-r--r--   1 loretoparisi  staff   30036 30 Lug 10:20 model.o
-rw-r--r--   1 loretoparisi  staff    1616 30 Lug 10:20 utils.o
-rw-r--r--   1 loretoparisi  staff  118404 30 Lug 10:20 fasttext.o
-rwxr-xr-x   1 loretoparisi  staff  270940 30 Lug 10:20 fasttext
但显然这不是比特码!然后我用
emmake make VERBOSE=1
编译,结果发现它没有使用
em++
编译器,所以我尝试了
cmake

emconfigure cmake
emmake make VERBOSE=1
此时,我可以看到
em++
正在运行

/usr/local/Cellar/cmake/3.11.1/bin/cmake -E cmake_link_script CMakeFiles/fasttext-shared.dir/link.txt --verbose=1
/Users/loretoparisi/Documents/MyProjects/emsdk/emscripten/1.38.10/em++ -fPIC  -pthread -std=c++11 -funroll-loops -O3 -march=native  -shared -Wl,-soname,libfasttext.so -o libfasttext.so @CMakeFiles/fasttext-shared.dir/objects1.rsp 
因此,我得到以下输出:

-rw-r--r--   1 loretoparisi  staff  870544 30 Lug 10:40 libfasttext.a
-rw-r--r--   1 loretoparisi  staff  306646 30 Lug 10:40 fasttext.wasm
-rw-r--r--   1 loretoparisi  wheel  114099 30 Lug 10:40 fasttext.js
-rw-r--r--   1 loretoparisi  staff  870504 30 Lug 10:40 libfasttext_pic.a
-rw-r--r--   1 loretoparisi  staff  663728 30 Lug 10:40 libfasttext.so
这是一个有效的javascript文件,但在运行它时会导致异常

$ node fasttext.js predict-prob /root/lang_id.bin - 2
exception thrown: 5280232 - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.
而它应该从
stdin
like

./fasttext predict-prob /root/lang_id.bin - 2
ja das is seher gut heute
__label__deu 0.999483 __label__bar 4.1711e-05
此错误可能是由于node.js中的
stdin
引起的吗?like命令似乎很好,因为它以正确的方式接受和解析参数:

$ node fasttext.js predict-prob
usage: fasttext predict[-prob] <model> <test-data> [<k>] [<th>]

  <model>      model filename
  <test-data>  test data filename (if -, read from stdin)
  <k>          (optional; 1 by default) predict top k labels
  <th>         (optional; 0.0 by default) probability threshold
但是我得到了相同的错误:
抛出异常:5278216-异常捕获被禁用,无法捕获此异常。使用-s DISABLE\u EXCEPTION\u CATCHING=0或DISABLE\u EXCEPTION\u CATCHING=2编译以捕获。

同样,我可以通过设置
noInitialRun:true
运行它,然后执行以下操作

Module.callMain(['predict-prob', '/root/ft_lang_model.bin', 'test.csv', '2']);

但是无论如何都会出现这种错误。

so
-s DISABLE\u EXCEPTION\u CATCHING=0
help?基本上它会抛出异常:
异常抛出:5279128
,所以我认为这意味着程序运行异常。您是否首先尝试了本机生成的clang版本?是的,当使用使用
make
生成的可执行文件,并按此顺序传递与
Module['arguments']
相同的参数时,它会起作用。我想知道
emscripten
是如何处理
stdin
stdout
的,也许这会导致异常。
let FastTextModule = require('./fasttext-module.js');
let Module = null;
if (Module) {
    return;
}
Module = {
    noExitRuntime: true,
    noInitialRun: false,
    preInit: [],
    preRun: [],
    postRun: [function () {
        console.log(`Loaded Javascript Module OK`);
    }],
    locateFile: "./",
    arguments: ['predict-prob', '/root/lang_id.bin', '-', 2]
};
Module['locateFile'] = function (path, prefix) {
    return prefix + path;
}
FastTextModule(Module);
Module.callMain(['predict-prob', '/root/ft_lang_model.bin', 'test.csv', '2']);