我有一个简单的C程序,需要解析Json数据。为此,我已经导入了JSON-C库。我的C代码是-
#include"json.h"
#include <emscripten.h>
EMSCRIPTEN_KEEPALIVE
int addnumbers(int a, int b) {
FILE *fp;
char buffer[1024];
struct json_object *parsed_json;
struct json_object *name;
struct json_object *age;
struct json_object *friends;
struct json_object *friend;
size_t n_friends;
size_t i;
fp = fopen("test.json","r");
fread(buffer, 1024, 1, fp);
fclose(fp);
parsed_json = json_tokener_parse(buffer);
json_object_object_get_ex(parsed_json, "name", &name);
json_object_object_get_ex(parsed_json, "age", &age);
json_object_object_get_ex(parsed_json, "friends", &friends);
printf("Name: %s\n", json_object_get_string(name));
printf("Age: %d\n", json_object_get_int(age));
n_friends = json_object_array_length(friends);
for(i=0;i<n_friends;i++) {
friend = json_object_array_get_idx(friends, i);
// printf("%lu. %s\n",i+1,json_object_get_string(friend));
}
return n_friends;
}
我遵循的过程是:-使用command-
将库(特别是json.h文件)编译为位代码emcc json.h -o json.bc
然后使用-编译我的C程序>
emcc json.c -o j_plumbing.bc -s EXTRA_EXPORTED_RUNTIME_METHODS=['ccall','cwrap'] -s ENVIRONMENT='web,worker' -s EXPORT_ES6=1 -s MODULARIZE=1 -s USE_ES6_IMPORT_META=0
然后我一起使用以下命令编译了两个文件以获取wasm文件:-
emcc json.bc j_plumbing.bc -o js_plumbing.js -s EXTRA_EXPORTED_RUNTIME_METHODS=['ccall','cwrap'] -g4 -s LINKABLE=1 -s EXPORT_ALL=1 -s ENVIRONMENT='web,worker' -s EXPORT_ES6=1 -s MODULARIZE=1 -s USE_ES6_IMPORT_META=0
这就是我从Vue文件中调用它的方式
public draw_outline() { Module().then(myModule => { console.log(myModule) const result = myModule.ccall('addnumbers', 'number', ['number', 'number'], [4, 6]); console.log("Value from wasm file", result); }); } but this is the error I'm getting- 002210ee:1 Uncaught (in promise) RuntimeError: function signature mismatch at fclose (wasm-function[524]:0x1a777) at addnumbers (wasm-function[148]:0x6a45) at Module._addnumbers (webpack-internal:///./src/components/js_plumbing.js:1098:4989) at Object.ccall (webpack-internal:///./src/components/js_plumbing.js:199:628) at eval (webpack-internal:///./node_modules/cache-loader/dist/cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/ts-loader/index.js?!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/Extraction.vue?vue&type=script&lang=ts&:128:31) at Object.Module.onRuntimeInitialized (webpack-internal:///./src/components/js_plumbing.js:1109:95) at doRun (webpack-internal:///./src/components/js_plumbing.js:1117:140) at run (webpack-internal:///./src/components/js_plumbing.js:1117:436) at runCaller (webpack-internal:///./src/components/js_plumbing.js:1113:15) at removeRunDependency (webpack-internal:///./src/components/js_plumbing.js:373:843)
有人能指出我在这里做错了吗?任何帮助表示赞赏
我有一个简单的C程序,需要解析Json数据。为此,我已经导入了JSON-C库。我的C代码是-#include“ json.h” #include