我是Native Client的新手; 也是插件/扩展的新手.令我印象深刻的是插件/扩展在某些方面比NaCl"更好":
可以在任何地方/无论如何编译插件/扩展来生成普通的旧DLL或.so; NaCL需要仅由NaCl工具链生成的二元化.
插件/扩展程序可以跨浏览器移植(例如,它应该在FIrefox和更多版本以及Chrome中运行).这是因为插件/扩展符合Netscape 3中引入的事实标准.
如果这一切都是真的,那么NaCl相对于插件/扩展有什么优势呢?
plugins google-chrome google-chrome-extension google-nativeclient
有谁知道如何将OpenCV移植到NaCl?我正在尝试基于人脸识别进行Chrome扩展.我将不胜感激.
我正在了解Chrome和Native Client.
基本上我想增加
chrome 预呈现的页面数量(现在只有一页).
我正在考虑创建一个
允许预呈现更多页面的扩展.
这是一种方法,还是我将其硬编码到Chrome中并从头开始构建?
编辑
我为这个问题开始了赏金.我真的很感激一些意见.
我正在编写一个小应用程序来测试和理解PNaCl.
该应用程序的目的是使用PNaCl框架中的HostResolver类将主机名解析为主机的ip .代码似乎工作正常,但我得到一个访问被拒绝错误(返回值-7)因为我没有向用户请求访问套接字层(我猜)的权限.问题是我不知道该怎么做.我试着写一个清单文件,但什么都没发生.
注意:此应用程序必须在开放的Web上运行,并且不能要求任何安装过程.我不想写Chrome应用.
我没有在网上找到任何线索所以我将非常感谢你的帮助.
hello_tuttorial.cc:
#include <stdio.h>
#include <string.h>
#include <sstream>
#include "ppapi/cpp/instance.h"
#include "ppapi/cpp/module.h"
#include "ppapi/cpp/var.h"
#include "ppapi/cpp/tcp_socket.h"
#include "ppapi/cpp/host_resolver.h"
#include "ppapi/cpp/module.h"
#include "ppapi/cpp/tcp_socket.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/utility/completion_callback_factory.h"
namespace {
// exptected string from the browser
const char * const kHelloString = "hello";
// the sting sent from the nacl module to the browser
const char * const kReplyString ="hello from the PNaCl";
}
class HelloTutorialInstance : public pp::Instance {
pp::CompletionCallbackFactory<HelloTutorialInstance> callback_factory_;
pp::TCPSocket tcp_socket_; …Run Code Online (Sandbox Code Playgroud) javascript google-chrome google-chrome-extension google-nativeclient google-chrome-app
在本机客户端示例页面上有两个图形示例.Pi Generator和Conway的生活
他们都使用我的所有cpu(嗯,一个核心是50%).在康威的生活中,cpu分为nacl64和chrome.
为什么这么慢?我正在使用chrome 12.0.7
我想将HTML画布的图像发送到Google Chrome上的NaCl模块.在"dom方面",我有以下代码:
var NaClModule = .... // NaCl module denoted by <embed> tag
var canvas = .... // canvas element
canvas.addEventListener('click', function() {
var imageData = this.getContext('2d').getImageData(0, 0, this.width, this.height);
NaClModule.postMessage(imageData.data);
});
Run Code Online (Sandbox Code Playgroud)
imageData.data是Uint8ClampedArrayJavaScript控制台上的类型.所以我认为NaCl模块看到传递数据为pp::VarArrayBuffer
但是,NaCl模块实际上采用了传递数据,如pp::VarDictionary
key =原始数组的索引和值=原始数组的值(确认pp::Var::DebugString).
这是预期的行为吗?如果没有,我的代码是什么?
或者,还有其他方法将图像传递给NaCl模块吗?
来自NaCl新手的简单问题......
在我的javascript中,我向NaCl模块发布了一条消息.
在NaCl模块处理此消息后,如何在javascript中执行回调?
在入门教程中,给出了以下示例.
function moduleDidLoad() {
HelloTutorialModule = document.getElementById('hello_tutorial');
updateStatus('SUCCESS');
// Send a message to the Native Client module
HelloTutorialModule.postMessage('hello');
}
Run Code Online (Sandbox Code Playgroud)
如何在HelloTutorialModule.postMessage('hello')中执行回调函数; ?
谢谢.
我正在查看移植库的naclports列表,我想将openssl用于我的本机客户端扩展.我找不到一个正确的指令集来安装这些移植的库,我下载了openssl压缩文件并按照INSTALL文件中给出的说明但遇到了一些我无法解决的错误.
由于某种原因c_str()返回空字符串,该参数const chart**out_function将保存文件操作的方法名称,fopen所以基本上我所做的是将我有的字符串转换为c_str(),但我得到一个空字符串,下面是我如何进行调用
在这部分我只准备一个带有操作名称的字典,你可以注意到我只是将"fopen"作为字符串发送
pp::VarDictionary fileOp;
pp::VarArray args;
args.Set(0, "filename.txt");
args.Set(1, "wb");
fileOp.Set("args", args);
fileOp.Set("cmd", "fopen");
Run Code Online (Sandbox Code Playgroud)
此功能会分析上面发出的字典和返回函数的名称out_function,并args在out_params
int ParseMessage(pp::Var message, const char** out_function,
pp::Var* out_params) {
Run Code Online (Sandbox Code Playgroud)
我使用这行代码将字符串转换为c_string,但它返回空文本
*out_function = cmd_value.AsString().c_str();
Run Code Online (Sandbox Code Playgroud)
这是完整的代码,它基于Google Native Client,但同时它是标准的C/C++代码