在Windows上,如何在Chrome之外运行Google的Native Client?

时间:2012-11-29 01:19:18

标签: google-nativeclient

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

类似的问题被问到here,但答案似乎是特定于Linux(也许是OS X)。

非Windows答案是使用sel_ldr,但Windows上的Chrome安装中不存在此类文件。 nacl64.exe看起来像是文件相同的功能。这个page提到“NaCl过程”,即使Chrome在x64 Windows上是32位进程,sel_ldr也需要是64位,因此需要一个单独的进程。我还看到nacl64.exe在我的插件加载时运行,并且在我没有加载NaCl插件的情况下启动Chrome时没有运行。

NaCl plug-in for Visual Studio要求在64位窗口上运行,因此有关64位以上的注释。

在这个page上我找到了一个在Linux上被证明是成功的例子:

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

here我发现这个例子也适用于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

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

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

1 个答案:

答案 0 :(得分:3)

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

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