【问题标题】:How can you embed a C++ game into a webpage?如何将 C++ 游戏嵌入网页?
【发布时间】:2012-05-17 18:48:19
【问题描述】:

无需在 Flash 中重新编码或将其制成 Java 小程序! 将其保留为 C++ 应用程序,有没有办法将其嵌入网页中,以便网站访问者可以玩游戏?

我们可以假设它是一款小型游戏,与普通 Flash 游戏一样大,甚至更薄。

有问题的游戏是用 Allegro 库编写的,代码不到 1000 行。

有可能吗?

【问题讨论】:

  • 我相信,如果你实现了一个 JavaScript C++ 解释器/编译器或者将 C++ 代码编译成 JavaScript 代码,你就可以做到。
  • @Alex:原则上您可以分两步完成,而无需自己实现任何东西:Comeau 将 C++ 编译为 C,然后 Clue (cluecc.sourceforge.net) 将 C 编译为 Javascript。免责声明:这实际上可能不起作用,我不知道 Clue 是否接受 Comeau 输出的每个 C 功能,我不知道 Clue 的输出在浏览器上的可移植性如何,并且(最重要的是)因为纯 C++ 没有 GUI,这个特定的应用程序肯定使用特定于平台的库。

标签: c++ embed


【解决方案1】:

快速回答:不你不能。

C++ 应用程序不能嵌入到网页中,它们需要被下载并且用户必须在客户端机器上运行它们。

详细信息:这在某种程度上是可能的,但它绝对不能跨浏览器移植。例如,Internet Explorer 具有 ActiveX 组件(它们可以是 C++ 应用程序,将被下载、安装并在网页内运行)。其他浏览器有不同的机制来实现这一点(例如,Chrome 有它的 Native Client),但你不能编写真正可移植的东西,而且无论你使用什么,都会有很多限制。

【讨论】:

  • 使用Emscripten可以生成跨浏览器的Javascript代码!
  • 有趣的项目!我永远不会用 C++ 编写任何东西来编译它到 JavaScript,但这个想法本身很有趣。现在还有其他可行的替代方案,但总是需要一些重写。如果 emscripten 在您的情况下有效,那么很好!
【解决方案2】:

【讨论】:

  • 它可以工作,但它只能在 Chrome 上运行,可能他需要更改他的代码。
  • 浏览器内 Doom 太棒了:D
【解决方案3】:

试试 emscripten 项目,它是一个基于 LLVM Clang 的 C++ 编译器,将 C++ 文件编译成 JS 文件,然后可以在浏览器中运行。

#include <iostream>

int main()
{
    using namespace std;

    cout << "Hello World" << endl;
    return 0;
}

假设您将它保存在 helloWorld.cpp 中,请在安装 Emscripten 后使用它。

$ emcc helloWorld.cpp -o helloWorld.html

您将完成,现在在您的浏览器中打开 helloWorld.html 并亲自查看。 Emscripten 的好处是它支持广泛的桌面库,包括 SDL 等,

http://kripken.github.io/emscripten-site/

【讨论】:

  • Emscripten 可以在应用程序运行时执行此操作 -跨平台 -您使用的库支持的 OpenGL ES 2 或您使用的 OpenGL ES 2 兼容的 OpenGL 代码!
【解决方案4】:

只能作为 Google Chrome 浏览器的插件作为原生扩展。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多