Stipe Varnica
5 months ago
8 changed files with 1626 additions and 482 deletions
-
51.vscode/settings.json
-
2C++/cmd.txt
-
26C++/test.cpp
-
1868C++/test.js
-
BINC++/test.wasm
-
11README.md
-
123index.html
-
17index.js
@ -0,0 +1,51 @@ |
|||||
|
{ |
||||
|
"liveServer.settings.port": 5501, |
||||
|
"files.associations": { |
||||
|
"cctype": "cpp", |
||||
|
"clocale": "cpp", |
||||
|
"cmath": "cpp", |
||||
|
"cstdarg": "cpp", |
||||
|
"cstddef": "cpp", |
||||
|
"cstdio": "cpp", |
||||
|
"cstdlib": "cpp", |
||||
|
"cstring": "cpp", |
||||
|
"cwchar": "cpp", |
||||
|
"cwctype": "cpp", |
||||
|
"array": "cpp", |
||||
|
"atomic": "cpp", |
||||
|
"bit": "cpp", |
||||
|
"*.tcc": "cpp", |
||||
|
"compare": "cpp", |
||||
|
"concepts": "cpp", |
||||
|
"cstdint": "cpp", |
||||
|
"deque": "cpp", |
||||
|
"string": "cpp", |
||||
|
"unordered_map": "cpp", |
||||
|
"vector": "cpp", |
||||
|
"exception": "cpp", |
||||
|
"algorithm": "cpp", |
||||
|
"functional": "cpp", |
||||
|
"iterator": "cpp", |
||||
|
"memory": "cpp", |
||||
|
"memory_resource": "cpp", |
||||
|
"numeric": "cpp", |
||||
|
"random": "cpp", |
||||
|
"string_view": "cpp", |
||||
|
"system_error": "cpp", |
||||
|
"tuple": "cpp", |
||||
|
"type_traits": "cpp", |
||||
|
"utility": "cpp", |
||||
|
"initializer_list": "cpp", |
||||
|
"iosfwd": "cpp", |
||||
|
"iostream": "cpp", |
||||
|
"istream": "cpp", |
||||
|
"limits": "cpp", |
||||
|
"new": "cpp", |
||||
|
"numbers": "cpp", |
||||
|
"ostream": "cpp", |
||||
|
"stdexcept": "cpp", |
||||
|
"streambuf": "cpp", |
||||
|
"cinttypes": "cpp", |
||||
|
"typeinfo": "cpp" |
||||
|
} |
||||
|
} |
@ -1 +1 @@ |
|||||
emcc -o test.js test.cpp -s NO_EXIT_RUNTIME=1 -s "EXPORTED_RUNTIME_METHODS=['ccall']" |
|
||||
|
emcc -lembind -o test.js test.cpp -s NO_EXIT_RUNTIME=1 -s "EXPORTED_RUNTIME_METHODS=['ccall']" |
@ -1,18 +1,20 @@ |
|||||
#include <iostream>
|
#include <iostream>
|
||||
#include <emscripten/emscripten.h>
|
|
||||
|
#include <emscripten/bind.h>
|
||||
|
#include <string>
|
||||
|
using namespace emscripten; |
||||
|
|
||||
extern "C" { |
|
||||
EMSCRIPTEN_KEEPALIVE |
|
||||
int myFunction(int number) { |
|
||||
return number * number; |
|
||||
} |
|
||||
|
std::string myFunction(std::string word) |
||||
|
{ |
||||
|
std::string test = " testing"; |
||||
|
return word + test; |
||||
|
}; |
||||
|
|
||||
EMSCRIPTEN_KEEPALIVE |
|
||||
int add(int a, int b) { |
|
||||
return a + b; |
|
||||
} |
|
||||
} |
|
||||
|
EMSCRIPTEN_BINDINGS(my_module) |
||||
|
{ |
||||
|
function("myFunction", &myFunction); |
||||
|
}; |
||||
|
|
||||
int main() { |
|
||||
|
int main() |
||||
|
{ |
||||
return 0; |
return 0; |
||||
} |
} |
1868
C++/test.js
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,11 @@ |
|||||
|
# Prototype |
||||
|
|
||||
|
Link for compiling code with Embind → https://emscripten.org/docs/porting connecting_cpp_and_javascript/embind.html |
||||
|
Command for compiling code with Embind: |
||||
|
``` |
||||
|
emcc -lembind -o test.js test.cpp -s NO_EXIT_RUNTIME=1 -s "EXPORTED_RUNTIME_METHODS=['ccall']" |
||||
|
``` |
||||
|
- EMSCRIPTEN_BINDINGS macro is used to bind the C++ function to make it callable from JavaScript |
||||
|
- Emscripten compiles the C++ code to WebAssembly, generating a .wasm file and JavaScript glue code that loads the WebAssembly module and sets up the bindings |
||||
|
- When the HTML page is loaded, test.js is executed, loading the WebAssembly module , Emscripten's Module object is created, exposing the C++ functions (like myFunction) to JavaScript |
||||
|
- Example of using Module: var result = Module.myFunction(input) |
@ -1,16 +1,9 @@ |
|||||
function calculateResult() { |
function calculateResult() { |
||||
var numberInput = parseInt(document.getElementById("numberInput").value); |
|
||||
var result = Module.ccall("myFunction", "number", ["number"], [numberInput]); |
|
||||
document.getElementById("output").innerText = "Result: " + result; |
|
||||
|
var input = document.getElementById("numberInput").value; |
||||
|
var result = Module.myFunction(input) |
||||
|
document.getElementById("output").innerText = result; |
||||
} |
} |
||||
|
|
||||
// document
|
|
||||
// .getElementById("calculateBtn")
|
|
||||
// .addEventListener("click", calculateResult);
|
|
||||
|
|
||||
function calculate() { |
|
||||
var a = parseInt(document.getElementById("input1").value); |
|
||||
var b = parseInt(document.getElementById("input2").value); |
|
||||
var result = Module.ccall("add", "number", ["number", "number"], [a, b]); |
|
||||
document.getElementById("result").innerText = "Result: " + result; |
|
||||
} |
|
||||
|
|
||||
|
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue