我想知道如何在Emscripten中使用FS
。我想我已经完成了维基中提到的所有事情,但我仍然得到Uncaught ReferenceError: FS is not defined
。如果我搜索结果* .js文件的文字FS
没有发生,我认为应该有。
这是我到目前为止的代码。
InfoMedia.cpp
#include <math.h> //testing include
extern "C" {
// testing function
int int_sqrt(int x) {
return sqrt(x);
}
}// extern c
用
编译 emcc -s EXPORTED_FUNCTIONS="['_int_sqrt']" InfoMedia.cpp -o InfoMedia.js
init_fs.js
var Module = {
'print': function(text){
console.log(text)
},
'preRun' : function(){
console.log('prerun');
FS.createPath('/', 'home/user1', true, true);
},
'noInitialRun': true,
};
excample.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>InfoMediaJS-Example</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> </script>
<script type="text/javascript" src="init_fs.js"></script>
<script type="text/javascript" src="InfoMedia.js"></script>
<script type="text/javascript">
run();
</script>
</head>
<body></body>
</html>
在chrome preRun中运行之后,调用了我的错误。
prerun init_fs.js:6
Uncaught ReferenceError: FS is not defined init_fs.js:7
另外,如果我尝试在编译时使用
嵌入文件 emcc -s EXPORTED_FUNCTIONS="['_int_sqrt']" --embed-file gizmo.webm InfoMedia.cpp -o InfoMedia.js
我收到此错误Uncaught TypeError: Object #<Object> has no method 'FS_createDataFile'
它位于我在此行http://pastebin.com/Mu1qfG25 @ line 1460生成的js文件中
Module['FS_createDataFile']('/', 'gizmo.webm', [26, 69, 223,....]), true, true);
永远不会将FS插入生成的js文件中。所以我称之为FS的东西并不重要。是否需要添加任何编译器选项以插入库功能?
答案 0 :(得分:2)
它死得很简单。只需使用使用FS的功能,emscripten将自动包含它。正如您在输出文件中看到的那样,尽管emscripten提供的c libs比您在生成的输出文件中看到的要多得多,但它并没有包含不必要的库函数。
要想清楚,只需将InfoMedia.cpp改为:
#include <math.h> //testing include
#include <stdio.h>
extern "C" {
// testing function
int int_sqrt(int x) {
printf ("Decimals: %d %ld\n", 1977, 650000L); // use FS lib functionality
return sqrt(x);
}
}// extern c