Вектор поиска - это небольшая заметка дающая правильный вектор для того или иного вопроса на основе опыта автора.
Быстрый ответ используйте docker контейнер, но нужно иметь windows pro и устранить несколько багов из статьи. Каких именно и как читайте ниже :)
Ах да и прочтение статьи все еще не позволит вам компилить код с подключенной библиотекой, например какие-то либы. Конечно если вы не разбираетесь в тех ошибках которые будут выскакивать при компиляции.
Если вы хотите запустить С/С++ код в браузере либо в node.js то можно использовать Web Assembly.
WA - это такой формат байт кода который понимает браузер. Берешь байт код (его можно загрузить так же как загружаются картинки), пихаешь его в массив байтов как-то так new Uint8Array дальше компилишь в модуль WebAssembly.compile(new Uint8Array) и из полученного модуля создаешь экземпляр класса в котором и будут доступны функции из C/C++ программы new WebAssembly.Instance(WebAssembly.compile(new Uint8Array)).
В общем почитайте тут. В статье используется онлайн компилер.
Для компиляции кода C/C++ в web assembly байт код существует аналог gpp. Называется Emscripten. И тут есть три варианта как его использовать:
Установка на linux идеальный вариант, но лично мне не нравится вариант с Virtual Box потому что он не удобный. Для меня этот подход оказался очень медленным в разработке.
И тут на помощь приходит третий вариант который я счел оптимальным.
Понадобится контейнер в котором уже все настроено /https://hub.docker.com/r/trzeci/emscripten/
Взять за основу статью Emscripten and npm. А так же устранить пару ошибок.
На винде может возникнуть ошибка с монтированием директории из-за путей. Помогает использование полного пути. Например так вместо $(pwd)
Для устанения символов понадобится програмка doc2unix.
src/my-module.cpp из build.sh заменяем на my-module.cpp
Я предпочел использовать copyfiles npm i copyfiles --save-dev.
А в секции команды build:app написать так "build:app": "copyfiles index.html dist/"
Быстрый ответ используйте docker контейнер, но нужно иметь windows pro и устранить несколько багов из статьи. Каких именно и как читайте ниже :)
Ах да и прочтение статьи все еще не позволит вам компилить код с подключенной библиотекой, например какие-то либы. Конечно если вы не разбираетесь в тех ошибках которые будут выскакивать при компиляции.
Если вы хотите запустить С/С++ код в браузере либо в node.js то можно использовать Web Assembly.
WA - это такой формат байт кода который понимает браузер. Берешь байт код (его можно загрузить так же как загружаются картинки), пихаешь его в массив байтов как-то так new Uint8Array дальше компилишь в модуль WebAssembly.compile(new Uint8Array) и из полученного модуля создаешь экземпляр класса в котором и будут доступны функции из C/C++ программы new WebAssembly.Instance(WebAssembly.compile(new Uint8Array)).
В общем почитайте тут. В статье используется онлайн компилер.
Возможные варианты компиляции
Для компиляции кода C/C++ в web assembly байт код существует аналог gpp. Называется Emscripten. И тут есть три варианта как его использовать:
- Установить на Windows и попробовать избежать ошибок :)
- Установить на Linux используя Virtual Box.
- Рабочий. О нем чуть ниже.
Установка на linux идеальный вариант, но лично мне не нравится вариант с Virtual Box потому что он не удобный. Для меня этот подход оказался очень медленным в разработке.
И тут на помощь приходит третий вариант который я счел оптимальным.
3. Docker контейнер.
Понадобится контейнер в котором уже все настроено /https://hub.docker.com/r/trzeci/emscripten/
Взять за основу статью Emscripten and npm. А так же устранить пару ошибок.
Ошибка с путями
На винде может возникнуть ошибка с монтированием директории из-за путей. Помогает использование полного пути. Например так вместо $(pwd)
docker run --rm -v d:/_projects/web-assembly:/src trzeci/emscripten./build.sh
В статье такdocker run --rm -v $(pwd):/src trzeci/emscripten./build.sh
Ошибка при чтении build.sh из-за текстовой кодировки
Ошибка с путем к директории src
Ошибка с командой npm run build:app
У меня скрипт "build:app": "cp index.html dist/index.html", просто не запустился. Оно и понятно так как cp не указан как зависимость.
Я предпочел использовать copyfiles npm i copyfiles --save-dev.
А в секции команды build:app написать так "build:app": "copyfiles index.html dist/"