Hello,
I am trying to build a shared library with emscripten that depends from a 
static library.
I am not able to do it.

I get this error:


exception thrown: TypeError: Cannot read properties of undefined (reading 
'apply'),TypeError: Cannot read properties of undefined (reading 'apply')
    at obj.<computed> 
(http://localhost/DentalCadWeb/DependencyCGAL/testLib/emscripten/dllAndCommonLib/main.js:1:55081)
    at wasm://wasm/34626aba:wasm-function[2]:0x9b
    at wasm://wasm/004c86ce:wasm-function[154]:0x6bb81
    at wasm://wasm/004c86ce:wasm-function[155]:0x6bba5
    at Module._main 
(http://localhost/DentalCadWeb/DependencyCGAL/testLib/emscripten/dllAndCommonLib/main.js:1:650962)
    at callMain 
(http://localhost/DentalCadWeb/DependencyCGAL/testLib/emscripten/dllAndCommonLib/main.js:1:2902021)
    at doRun 
(http://localhost/DentalCadWeb/DependencyCGAL/testLib/emscripten/dllAndCommonLib/main.js:1:2902599)
    at 
http://localhost/DentalCadWeb/DependencyCGAL/testLib/emscripten/dllAndCommonLib/main.js:1:2902754
printErr @ main.html:1
main.js:1 Uncaught TypeError: Cannot read properties of undefined (reading 
'apply')
    at obj.<computed> (main.js:1:55081)
    at 34626aba:0x9b
    at 004c86ce:0x6bb81
    at 004c86ce:0x6bba5
    at Module._main (main.js:1:650962)
    at callMain (main.js:1:2902021)
    at doRun (main.js:1:2902599)
    at main.js:1:2902754


This is my complete example with command line for main, dynamic library and 
static library

****************************** main ************************************

file: main.cpp

 #include <dlfcn.h>
 #include <stdio.h>
 #include <emscripten.h>

int main()  
{
    printf("inizio programma\n");
    int found = EM_ASM_INT(
      return Module['preloadedWasm']['/library.so'] !== undefined;
    );
    if (!found) {
      return 1;
    }
    void *lib_handle = dlopen("/library.so", 0);
    if (!lib_handle) {
      return 2;
    }
    
    typedef int (*sumfunc)(int,int);
    sumfunc s = (sumfunc)dlsym(lib_handle, "sum");
    printf("la somma di 3 e 4 รจ %d\n", s(3,4));
    return 0;
}

#command line compilation 

em++ main.cpp -o main.html -s MAIN_MODULE=1 --preload-file .@/ -O2 
--use-preload-plugins -s EXPORT_ALL=1 

****************** dynamic library *********************

file: library.c

#include <stdio.h>
#include "Common/CommonLib.h"
      int sum(int x, int y) {
        return x + diff(y,x);
      }

#command line compilation 

emcc library.c -s SIDE_MODULE=1 -O2 -o library.wasm -s EXPORT_ALL=1 
-L/Common/build/libcommonLib.a
mv library.wasm library.so


****************** static library *********************


file: commonLib.h
int diff(int a, int b);


file: commonLib.cpp

#include <stdio.h>
#include "commonLib.h"
int diff(int a, int b)
{
    printf("call diff with parameters a %d b %d\n",a,b);
    return a-b;
}

#command line compilation 

em++ -c commonLib.cpp
emar -r libcommonLib.a commonLib.o

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to emscripten-discuss+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/79bf0b52-fe54-4452-b577-0a8847981813n%40googlegroups.com.

Reply via email to