【问题标题】:Run java script file created by Emscripten from another java script file从另一个 javascript 文件运行 Emscripten 创建的 javascript 文件
【发布时间】:2015-08-19 15:07:27
【问题描述】:

任务如下: 我想运行 Emscripten.cpp 文件创建的 .js 文件,从另一个 .js 文件。

即:我有ping.cpp 文件,它只显示文本"ping"。我使用 Emscripten 创建 ping.js 要做到这一点,我输入 em++ ping.cpp,这里是 - ping.js

现在我可以使用node ping.js 运行它,但我希望它从我的第二个.js 文件运行,该文件称为init.js,我不明白我应该怎么做。因为 ping.js 没有显示“ping”的主要函数,并且我可以从另一个 .js 文件或例如 .html 文件调用这些函数,所以它有 68500 行代码。

那么,我有没有机会从 init.js 运行 ping.js?

【问题讨论】:

    标签: javascript c++ node.js emscripten


    【解决方案1】:

    您可能应该在 HTML 文件中加载带有 script 标签的 ping.js 文件,就像任何其他脚本一样。诀窍是确保您使您想要使用的任何功能都可以访问您加载的其他脚本。为此,您需要设置 EXPORTED_FUNCTIONS 编译标志以指示要保留的函数名称。具体

    em++ -s EXPORTED_FUNCTIONS="['_ping']" ping.cpp -o ping.js
    

    请注意需要在函数名称前添加下划线 ('_') 以补偿名称混淆。

    在其他要使用ping的JS文件中,需要进行设置。确保编译后的脚本首先加载,然后执行:

    ping = Module.cwrap('ping', 'null', ['string']);
    

    这将允许您使用 ping,假设它具有 void 返回类型(因此为 null)和单个 c 样式字符串参数(因此为 ['string'])。

    如果您确实想从另一个 JavaScript 文件加载它,请参阅以下答案: How do I include a JavaScript file in another JavaScript file?

    【讨论】:

    • 我尝试输入em++ -s EXPORTED_FUNCTIONS="['_main', '_ping']" ping.cpp -o ping.js,但收到此错误:WARNING root: function requested to be exported, but not implemented: "_ping"
    • 啊!我想我误解了你原来的问题。在 EXPORTED_FUNCTIONS 列表中,我假设您有一个名为 ping 的函数,可以在屏幕上打印文本“ping”。您应该只列出您希望能够使用的函数的名称(带有前导下划线)。如果你有一个主函数,它应该自动运行(默认情况下),你需要从你的 JS 代码中调用任何其他函数来让它们运行。
    • 好吧,我创建了ping.cpp,女巫包含void ping(std::string arg)。函数ping() 这样做:{std::cout << arg;}。然后我输入em++ -s EXPORTED_FUNCTIONS="['_ping']" ping.cpp -o ping.js 并创建ping.js。之后,我转到我的第一个名为 init.js 的 .js 文件并在那里输入 function init(),这是:_ping = Module.cwrap('ping', 'null', ['string']); _ping('Hello from Java Script side'); 之后我转到 index.html 声明我的 init.js 并运行 init() 函数,女巫应该运行_ping(),但它没有显示Hello from Java Script side 我做错了什么?
    • 在您的 HTML 文件中,您是否同时拥有 <script src="ping.js"></script><script src="init.js"></script>?第一个将加载所有 C++/Emscripten 代码,第二个将具有您的 init 函数。
    • 另外,如果您想要一组简单的工作示例(这可能会帮助您解决问题),这是我写的教程:devosoft.org/an-introduction-to-web-development-with-emscripten
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多