Я пытаюсь перенести библиотеку lhslib (написанную на C ++) в WebAssembly с помощью emscripten (em cc v. 1.40.1, clang v. 12.0.0, macOS 10.15.5) . К сожалению, у меня очень ограниченное представление о C ++, поэтому, пожалуйста, потерпите меня. . cpp файл в WASM:
// a short overview of what the file looks like
#include "LHSCommonDefines.h"
#include "utilityLHS.h"
namespace lhslib
{
void randomLHS(int n, int k, bclib::matrix<int> & result, bclib::CRandom<double> & oRandom)
{
// further contents of the file
}
}
Запуск
emcc ../src/lhslib/randomLHS.cpp -I../src/bclib -o randomLHS.html
создает ожидаемые файлы randomLHS.wasm
, randomLHS.js
и randomLHS.html
. Однако при обслуживании файла html
и проверке объекта Module
, созданного emscripten, он не содержит желаемой функции randomLHS
.
Затем я прочитал о EXPORTED_FUNCTIONS
и попробовал следующее
emcc ../src/lhslib/randomLHS.cpp -I../src/bclib -o randomLHS.html -s EXPORTED_FUNCTIONS='["_randomLHS"]' -s EXPORTED_RUNTIME_METHODS='["ccall", "cwrap"]'
Это приводит к следующей ошибке:
emcc: error: undefined exported function: "_randomLHS" [-Wundefined] [-Werror]
К сожалению, я не смог найти никаких примеров, демонстрирующих, как экспортировать пространство имен (как в файл randomLHS
), или как указать функцию из пространства имен, которая должна быть экспортирована. Не могли бы вы рассказать мне, как мне этого добиться?
Спасибо за вашу помощь!