Tag: emscripten

通过Emscripten在Javascript中进行结构化操作

我在使用C和Javascript之间的emscripten互操作方面遇到了很多问题。 更具体地说,我无法访问在javascript中使用C创建的结构,因为指向结构的指针作为外部库传递给javascript。 看一下下面的代码: C: #include #include #include struct test_st; extern void read_struct(struct test_st *mys, int siz); struct test_st{ uint32_t my_number; uint8_t my_char_array[32]; }; int main(){ struct test_st *teststr = malloc(sizeof(struct test_st)); teststr->my_number = 500; for(int i = 0; i my_char_array[i] = 120 + i; } for(int i = 0; i my_char_array[i]); } read_struct(teststr,sizeof(teststr)); return 0; […]

在asm.js中的函数之间传递双数组

我有一个C函数编译成asm.js与以下参数: void myfunc(double v1[], double v2[], int v_size, double c) 它接受一个数组( v1 ),应用转换,然后用输出填充另一个相同大小的数组( v2 )。 我编译它,然后运行以下JS代码: v1 = new Array(1.0, 1.5, 2.0); v2 = Module._malloc(8 * v1.length); Module.ccall(“myfunc”, null, [“array”, “number”, “number”, “number”], [v1, v2, v1.length, 2]); 但是,当我运行getValue(v2, “double”)我得到1.297703e-318(这是错误的),当我运行getValue(v2 + 8, “double”)或getValue(v2 + 16, “double”)时返回0(这也是错误的)。 我已经将C函数简化为只是控制台注销v1的内容,并且它也打印出垃圾数据,所以至少读取传入的双数组存在问题。更具体的问题是: 如何正确地将双数组传入asm.js函数? 如何从asm.js函数正确返回双数组?

如何将OpenSSL与emscripten相关联?

我正在尝试编译一些使用OpenSSL和emscripten的C代码,但是我得到了未解决的符号警告,例如: warning: unresolved symbol: SHA256_Init warning: unresolved symbol: SHA256_Final warning: unresolved symbol: SHA256_Update 我使用这个命令编译代码: emcc SHA256.c -lssl -lcrypto -L /usr/local/openssl-1.0.2k/lib/ -I /usr/local/openssl-1.0.2k/include -s WASM=1 -o SHA256.html –emrun 使用以下源代码 #include #include #include #include #include #include void sha256(char *string, char outputBuffer[65]) { unsigned char hash[SHA256_DIGEST_LENGTH]; SHA256_CTX sha256; SHA256_Init(&sha256); SHA256_Update(&sha256, string, strlen(string)); SHA256_Final(hash, &sha256); int i = 0; […]