Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Not able to use exported c function as custom function in query #310

Open
Labels
@AadhiKat

Description

@AadhiKat

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 ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp