emscripten проект позволяет генерировать Javascript из C и C++:
Emscripten является компилятор LLVM к JavaScript. Требуется бит-код LLVM - , который может быть сгенерирован из C/C++, используя llvm-gcc (DragonEgg) или clang или любой другой язык, который может быть преобразован в LLVM, и компилирует это в JavaScript, который может быть запущен на web (или в любом месте JavaScript может работать).
и с помощью методов, таких как ccall and cwrap вы можете вызывать функции C:
Используя пример с сайта, это C++ код, который используется extern "C"
предотвратить имя коверкая:
#include <math.h>
extern "C" {
int int_sqrt(int x) {
return sqrt(x);
}
}
может быть скомпилирован как так:
./emcc tests/hello_function.cpp -o function.html -s EXPORTED_FUNCTIONS="['_int_sqrt']"
и используется в Javascript:
int_sqrt = Module.cwrap('int_sqrt', 'number', ['number'])
int_sqrt(12)
int_sqrt(28)
embind может использоваться для функций и классов C++. Быстрый пример с сайта выглядит следующим образом:
// quick_example.cpp
#include <emscripten/bind.h>
using namespace emscripten;
float lerp(float a, float b, float t) {
return (1 - t) * a + t * b;
}
EMSCRIPTEN_BINDINGS(my_module) {
function("lerp", &lerp);
}
и компилировать:
emcc --bind -o quick_example.js quick_example.cpp
и использовать в Javascript:
<!doctype html>
<html>
<script src="quick_example.js"></script>
<script>
console.log('lerp result: ' + Module.lerp(1, 2, 0.5));
</script>
</html>
Термин "использование" такой свободно определяется один. Это может означать много разных вещей. – Galik
Не все реализации Javascript написаны на C++. –
Посмотрите asm.js. –