3

这个问题专门针对 Windows(64 位)。

此处提出了类似的问题,但答案似乎特定于 Linux(可能还有 OS X)。

非 Windows 的答案是使用 sel_ldr 但在 Windows 上的 Chrome 安装中没有这样的文件。nacl64.exe 似乎是具有相同功能的文件。这个页面提到了“NaCl 进程”,即使 Chrome 在 x64 Windows 上是 32 位进程,sel_ldr 也需要是 64 位,因此是一个单独的进程。我还看到 nacl64.exe 在我的插件加载时运行,而当我在没有加载 NaCl 插件的情况下启动 Chrome 时没有运行。

Visual Studio的NaCl 插件需要在 64 位窗口上运行,因此上面关于 64 位的注释。

在此页面上,我发现了一个在 Linux 上被报告为成功的示例:

~/nacl_sdk/pepper_19/tools/sel_ldr_x86_64 -B ~/nacl_sdk/pepper_19/tools/irt_x86_64.nexe hello_x86_64.nexe

在这里我也为 Linux 找到了这个例子:

/home/ubuntu/nacl_sdk/pepper_19/tools/sel_ldr_x86_32 -a -S -B /home/ubuntu/nacl_sdk/pepper_19/tools/irt_core_x86_32.nexe <plug-in path>

所以我尝试了一些以此为模型的命令,但都导致 nacl64.exe 崩溃:

<user directory>\AppData\Local\Google\Chrome\Application\23.0.1271.91>nacl64.exe -B nacl_irt_x86_64.nexe <NaCL SDK root>\vs_addin\examples\hello_nacl_cpp\hello_nacl_cpp\NaCl64\newlib\Debug\hello_nacl_cpp_64.nexe

d:\><user directory>\AppData\Local\Google\Chrome\Application\23.0.1271.64\nacl64.exe -B <user directory>\AppData\Local\Google\Chrome\Application\23.0.1271.64\nacl_irt_x86_64.nexe <NaCL SDK root>\vs_addin\examples\hello_nacl_cpp\hello_nacl_cpp\NaCl64\newlib\Debug\hello_nacl_cpp_64.nexe

d:\><user directory>\AppData\Local\Google\Chrome\Application\23.0.1271.64\nacl64.exe -a -S -B <user directory>\AppData\Local\Google\Chrome\Application\23.0.1271.64\nacl_irt_x86_64.nexe <NaCL SDK root>\vs_addin\examples\hello_nacl_cpp\hello_nacl_cpp\NaCl64\newlib\Debug\hello_nacl_cpp_64.nexe

我已经验证了 hello_nacl_cpp_64.nexe 在通过网页在 Chrome 中运行时可以正常工作。

那么问题来了,在 Windows 上,如何在 Chrome 之外成功运行 Google 的 Native Client?

4

1 回答 1

3

您可以在文件夹中的 NaCl SDK 中找到 sel_ldr.exe 和非浏览器 IRT pepper_<version>/tools

请注意,NaCl 应用程序无法在浏览器和 sel_ldr 中成功运行。浏览器应用程序不应该有主,命令行应用程序必须有它。命令行应用程序也不能使用 Pepper API,因为 sel_ldr 没有实现它们。

于 2012-11-29T06:44:51.850 回答