- Notifications
You must be signed in to change notification settings - Fork1.1k
Open
Labels
Description
I wrote a c function and compiled using the command
emcc lib/alternate_case.c -s WASM=1 -s EXPORTED_FUNCTIONS="['_alternatecase']" -s EXTRA_EXPORTED_RUNTIME_METHODS='["ccall", "cwrap"]' -s ASSERTIONS=1 -o public/alternate_case.js
Here is my C function
#include<stdio.h>#include<string.h>#include<ctype.h>#include<emscripten.h>int main() { return 1;}char * alternatecase(char *str) { char *initial_ptr; initial_ptr = str; for (int i=0; i < *str!='\0' ; i++){ if( (i % 2) == 0) *str = tolower(*str); else *str = toupper(*str); str++; } return initial_ptr;}Index.html
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>My first Web Assembly Demo</title> </head> <body> <h1> MY first web assembly demo</h1> Output is in Javascript console <main> <button>Execute</button> <pre> Results will be displayed here </pre> </main> </body> <script src='/dist/sql-wasm.js'></script> <script src='alternate_case.js'></script> <script type="text/javascript" src="exporting-c-function.js"></script></html>I took the sql-wasm.js from this repository. alternate_case.js is the compiled file from emcc.
This is the exporting-c-function.js
config = { locateFile: filename => `dist/sql-wasm.wasm` } initSqlJs(config).then(function(SQL){ //Create the database var db = new SQL.Database(); // Run a query without reading the results const func = cwrap('alternatecase','string', ['string']); db.create_function("altcase" , func) sqlstr = "CREATE TABLE hello (a int, b char);"; sqlstr += "INSERT INTO hello VALUES (0, 'hello');" sqlstr += "INSERT INTO hello VALUES (1, 'world');" db.run(sqlstr); // Run the query without returning anything //db.run("INSERT INTO hello VALUES (alternatecase('awdqwdq'));"); // Inserts 10 and 'Hello world' db.run('SELECT altcase(b) from hello;');});It is throwing this error in the console
Error: wrong number of arguments to function altcase()
And it accepts only 0 arguments.
Note: if I try from browser console , I am able to use the function and get the output.
How to use this as custom function?
Also how to create custom function in web workers and use it ?