问题标签 [emscripten]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
323 浏览

emscripten - 调用函数,带数组参数

Module.cwrap(funcname, return, params)如果Module.cwrap('square', 'number', ['number'])C++ 函数看起来像这样:int square(int);

但是如果我的 C++ 函数看起来像这样呢?int fnc(int, int[]);

提前致谢,

0 投票
1 回答
183 浏览

linux - Emscripten 和空的广场

在使用 Emscripten 编译 OpenGL / GLUT 代码后,我遇到了一个困扰我的小问题。我可以用 gcc 和 emcc 编译。我只是在不同的代码下有一个关于-nostdinc ++ Maios的警告(这对我来说从来都不是问题)用gcc编译的代码工作正常。但是生成的html页面只显示一个黑色方块。代码已生成,但没有出现

你知道为什么吗?

0 投票
2 回答
959 浏览

c++ - ClCompile 和 Emscripten

Emscripten/tests/msvc10 中的一组示例中的基本 hello world 出现错误

我有一个错误 MSB4096,但我在 Visual Studio 2012 上找不到问题的解决方案。

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(817,5):错误 MSB4096:项目列表“ClCompile”中的项目“..\hello_world.c” " 没有定义元数据“ProgramDataBaseFileName”的值。要使用此元数据,请通过指定 %(ClCompile.ProgramDataBaseFileName) 对其进行限定,或确保此列表中的所有项目都定义此元数据的值。

你知道原因吗?

谢谢

0 投票
1 回答
723 浏览

c - 使用 emscripten 从标准输入读取得到不存在的换行符

我正在尝试使用 emscripten 构建一个 C 代码库,它的所有 I/O 调用都经过一个抽象层。它没有达到我的预期,所以我在 StackOverflow 上使用 getline 例程尝试了一个更简单的测试:

在 gcc 或 clang 下编译,这工作正常。它会读取一个字符串,直到您按下回车键,然后返回该字符串。但是当我编译它时:

它认为输入了换行符,所以它打印一个空行并且不给我输入的机会。有任何想法吗?

0 投票
1 回答
2453 浏览

javascript - Emscripten- 使用 Module.cwrap 检索由 c 函数设置的数组值

我们有一个通过 emscripten 编译为 javascript 的“小 c”库。c 库中的许多函数会修改传入的数组。从 javascript 级别访问这些数组的机制是什么并不明显。

使用Module.cwrap和调用正确导出的函数(例如EXPORTED_FUNCTIONS="['_myFunc'])很简单,但是对在 c 端计算的变量的唯一访问似乎是在此函数的返回中。如果我们从 c 端返回一个指向数组的指针,那么如何从 javascript 端访问该数组并不明显。

如果我们指出它Module.cwrap有一个 returnTypearray调用的 c 函数将如何返回一个数组?

0 投票
2 回答
15194 浏览

javascript - 如何处理传递/返回数组指针到 emscripten 编译代码?

在 Windows 7 环境中,我使用 emcc 编译了一个简单的 c 程序,该程序接受一个数组并对其进行修改(见下文)。

使用 emcc 的 -o 选项,我生成了一个加载到浏览器 (Chrome) 的 .html 文件。

加载后,我看到在浏览器窗口中生成的输出符合预期(见下文)。

但是,当通过 javascript 控制台使用 module.cwrap() 命令并尝试直接调用该函数时(在 main() 之外),

我看到在浏览器中生成/显示以下内容,这不是我期望看到的。

我有以下问题:

  1. 在对 Module.cwrap() 的调用中,返回类型和参数列表的语法是否正确?我已经在教程的“与代码交互”部分成功运行了简单、直接的 int_sqrt() 示例,该示例处理将非指针变量传递给 int_sqrt() 例程。

  2. 当数组和/或指针传递给 emscripten 生成的 javascript 代码(或从其返回)时,是否发生了一些不同的事情?

  3. 当从 main() 调用时,函数 displayArray() 在浏览器中生成的输出如何工作(如预期的那样)?但不是通过javascript控制台?

0 投票
0 回答
196 浏览

javascript - Emscripten javascript库

我做了两个例子:

  • 第一个是 3D 菜单。
  • 第二个也是3D动画。

它们都使用 emscripten 编译成 webgl。
如何使用这两个示例简单地通过调用将它们介绍到同一个画布中?(创建某种库)。

我找到了一个解决方案,它是许多画布之间的交互,但由于使用了分离的画布而没有得到认可,所以它们看起来不在同一个界面中——>这对动画不利。

0 投票
1 回答
2287 浏览

emscripten - 试图让 asm.js 返回一个类型化数组

我正在使用 emscripten 生成一些 Javascript,并且试图弄清楚如何获取返回类型化数组的函数。我试图返回的数组是静态长度的,但我有点困惑如何在 JS 领域处理基于指针的返回类型。

这种包装器是做事的方式吗: 如何从 javascript 访问 Emscripten 类型数组?

非常感谢。

0 投票
1 回答
1165 浏览

ubuntu-12.04 - emscripten设置问题

我正在尝试设置 emscripten。所以,我遵循了这个指示。

我通过以下几行检查了版本:

node --version->v0.10.15

python --version->Python 2.7.3

我没有安装 LLVM 和 Clang。所以,我通过这种方式安装它们:

然后,我正在检查他们的版本:

llvm-config --version->3.2

clang --version->

接下来,我通过这个命令下载 emscripten:

git clone git://github.com/kripken/emscripten.git ~/emscripten(如下教程)

进入emscripten目录:cd ~/emscripten

另外,我遵循了这个:

输出hello, world!在两个命令中。

接下来,首先启动 emcc:

./emcc(如下教程)

输出:

检查这些路径以确保它们正确:

/usr/bin/python2 --version->Python 2.7.3

/usr/bin/node --version->v0.10.15

/usr/bin/llvm-config --version->3.2

看起来不错。现在我将尝试从教程中编译示例:

构建示例 1:

输出:''(无)运行示例 1:

输出:hello, world!

构建示例 2(生成 HTML):

输出:

没有创建“hello.html”! 我做错了什么?

附加信息:

我在谷歌上搜索了这个,但他们的解决方案对我没有帮助。(更多不同的错误和更多的痛苦)

0 投票
1 回答
999 浏览

javascript - Emscripten:用控制台替换提示(某种)

我有(交互式 - 像 python shell)C++ 控制台应用程序并开始使用 Emscripten(从 C++ 转编译为 JS)。一切都很好,但我希望将 JS 的焦点窃取提示替换为不那么……古怪的东西。

我尝试过的:我添加了一个输入文本区域和一个按钮来生成 html,并用一个 while 循环替换了提示调用行(循环直到用户按下按钮)。这并没有很好地工作,空循环冻结了浏览器(这可能是预期的,但 JS 中没有睡眠功能)。

所以,简而言之,我想要的是这样的布局:

和行为:

通过修改(emcc's)生成的JS代码来实现这一点的任何简单方法?(我知道如何通过修改(我的)原始代码来实现这一点,但如果可能的话,我想避免这种情况)