J'ai une application emscripten. J'ai un fichier javascript qui a une définition de fonction. Je charge ce fichier dans une chaîne et j'appelle ensuite emscripten_run_script
sur celui-ci. Ensuite, j'essaie d'appeler cette fonction plus tard en utilisant une fonction inline EM_ASM
mais il dit que la définition de la fonction est introuvable.
std::ifstream file("script.js"); // script.js has "someFunc" defined
std::string str((std::istreambuf_iterator<char>(file)),
std::istreambuf_iterator<char>());
emscripten_run_script( str.c_str() );
// the below give error "someFunc not defined"
EM_ASM({
someFunc();
});
Cependant, si je charge ce fichier javascript dans une chaîne de caractères et que j'ajoute ensuite à cette chaîne l'appel à la fonction
std::ifstream file("script.js"); // script.js has "someFunc" defined
std::string str((std::istreambuf_iterator<char>(file)),
std::istreambuf_iterator<char>());
auto combinedStr = str + "someFunc();";
emscripten_run_script( combinedStr.c_str() ); // works fine
Comment puis-je ajouter une fonction javascript définie dans un fichier à la portée globale pour être utilisée ultérieurement ?
Le fichier javascript ressemble à ceci :
function someFunc()
{
}