这个问题专门针对 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?