问题描述
- native client demo 无法加载本地native模块
-
你好,我刚学习native client,使用sdk里面的例子跑发现无法加载本地native 模块对象。自己按照你说的方法也写了一个demo,但是运行也是发现加载native module对象失败,该值为空。无法加载本地native模块对象。这是怎么回事呀?具体代码如下:
前端:<!DOCTYPE html>
hello_tutorial
<br>
hello_tutorialModule = null; // 模块的全局对象<br>
statusText = 'NO-STATUS';</p><pre><code>// 更新状态
function moduleDidLoad() {
hello_tutorialModule = document.getElementById('hello_tutorial');
updateStatus('SUCCESS');
// 向模块发送消息
hello_tutorialModule.postMessage('hello');
}// 消息句柄函数。句柄在NaCl模块发送相应消息时自动唤起。
// 在C中是PPB_Messaging.PostMessage(),C++中则是pp::Instance.PostMessage()
// 在这个demo当中,我们收到消息之后弹窗示意function handleMessage(message_event) {
alert(message_event.data);
}// 页面载入时很可能NaCl模块还没有载入,因此我们将状态写为正在读取;
// 而如果模块已经载入,则什么都不做。
function pageDidLoad() {
if (hello_tutorialModule == null) {
updateStatus('LOADING...');
} else {
// 事实上,NaCl模块的载入成功事件是不可能在页面载入成功事件之前就发生的,
// 因此我们这里简单的认为页面载入之后所更新显示的消息仍旧是当前消息,而不是'SUCCESS'。
updateStatus();
}
}// 设置状态。如果存在id为'statusField'的元素,那么将其设置为参数携带的状态
function updateStatus(opt_message) {
if (opt_message)
statusText = opt_message;
var statusField = document.getElementById('status_field');
if (statusField) {
statusField.innerHTML = statusText;
}
}
</code></pre><p>
Native Client Module hello_tutorial
var listener = document.getElementById('listener');
listener.addEventListener('load', moduleDidLoad, true);
listener.addEventListener('message', handleMessage, true);Status
NO-STATUS
native端:
/// @file hello_tutorial.cc
/// 载入NaCl模块时,浏览器首先将搜索CreateModule()方法,CreateModule()会返回一个对象实例,
/// 之后浏览器会调用该实例的CreateInstance()方法,这时浏览器每遇到一次相应的就会调用一次。
///
/// 浏览器通过Javascript的postMessage()函数与NaCl通信。
/// 当调用postMessage()时,浏览器会转而调用pp::Instance的HandleMessage()方法。
/// 而如果模块需要与外界主动通信,则是使用pp::Instance的postMessage()方法。
/// 注意,这两个postMessage()都是异步的,因此两者在调用之后迅速返回。#include
#include
#include "ppapi/cpp/instance.h"
#include "ppapi/cpp/module.h"
#include "ppapi/cpp/var.h"namespace {
// 这个字符串用来判断消息是否是我们期望的内容
const char* const kHelloString = "hello";
// 这个字符串用来向浏览器返回内容
const char* const kReplyString = "hello from NaCl";
} // namespace/// 每一个NaCl模块都将有一个相应的pp::Instance子类实例对应,
/// 为了与浏览器进行通信,你必须重载 HandleMessage()方法以及PostMessage()方法
class hello_tutorialInstance : public pp::Instance {
public:explicit hello_tutorialInstance(PP_Instance instance) : pp::Instance(instance)
{}
virtual ~hello_tutorialInstance() {}/// HandleMessage() 负责接收浏览器中postMessage()发送的消息内容
/// 其中的参数几乎可以表示任何东西,但通常都是JSON字符串,比如这样:
/// var json_message = JSON.stringify({ "myMethod" : "3.14159" });
/// nacl_module.postMessage(json_message);
virtual void HandleMessage(const pp::Var& var_message) {
// 这里是处理消息的代码了
if (!var_message.is_string())
return;
std::string message = var_message.AsString();
pp::Var var_reply;
if (message == kHelloString) {
var_reply = pp::Var(kReplyString);
PostMessage(var_reply);
}
}
};class hello_tutorialModule : public pp::Module {
public:
hello_tutorialModule() : pp::Module() {}
virtual ~hello_tutorialModule() {}virtual pp::Instance* CreateInstance(PP_Instance instance) {
return new hello_tutorialInstance(instance);
}
};namespace pp {
Module* CreateModule() {
return new hello_tutorialModule();
}
} // namespace pp
相关文章
- native client能够调用第三方dll文件吗?
- sql server-php_sqlsrv_55_ts.dll无法在phpinfo()中加载出来
- native client (nacl)插件开发
- sql server native client安装失败,说什么操作系统不支持
- 无效的连接字符串属性-Microsoft SQL Server Native Client 10.0 错误 &#39;80004005&#39; 错误 困扰好几天了
- 32位Linux下安装64位Hadoop的问题
- ios-怎么在iOS下用native api实现HTTPS?
- beans-初学者学习中使用maven管理项目spring的Demo运行报错,求指导
- native-jni注册关联本地方法。。。
- dfs-本地文件上传到hadoop文件夹时出错。各路求助大神。
【云栖快讯】他,一路保送,但可能不是你想象中的学霸; 他,曾是微软最年轻的技术管理者,挑战带领跨国团队; 他,后来加入阿里,成为阿里西雅图分部的第22名员工; 他,就是阿里通用计算平台负责人关涛! 通过短视频,为你揭晓他的成长和开发计算平台的经历,以及他对未来的展望! 详情请点击
热门推荐
- 高性能云服务器2折起
- 云服务器配置
- 技术资料
- 云计算
- 域名
- shell
- node.js
- 问答
- java
- mysql
- C++
- python
- jQuery
- Android
- asp
- PHP技巧
- jQuery教程
- JavaScript技巧
- JS
- SEO
- sql server
- mysql教程
- 前端
- 技术文集
- 技术
- 主题地图
- A
- z
- 云服务器哪家好
- API
- 大数据
- 云安全
- 云存储
- 云计算
- 获取公众号授权失败
- 兼容性疑难解答
- path
- stm32
- jsonobject
- product
前三篇
- ssh项目无法部署到webapp目录下
- 消息-Android中的handler机制
- 模板-label mx条形码软件的接口
后三篇
- fx- FX2N系列PLC通过编程口如何与上位机实现串口通信
- svn-项目组搭建了一个CSVN服务器,每天开机的时候,每次都需要登录的客户端启动,怎么让他默认自动启动
- MFC 入口是如何调用到界面接口的
(yq.aliyun.com)为您免费提供native client demo 无法加载本地native模块相关信息,包括
native client
的信息
,所有native client demo 无法加载本地native模块相关内容均不代表的意见!
该页面h5页面的地址是:https://m.aliyun.com/yunqi/wenzhang/show_63891,您可以点击native client demo 无法加载本地native模块-手机站访问。
- 推荐产品
云数据库RDS
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
立即查看
云服务器9.9元 限时抢购
6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验
9.9元 立即购买
云服务器ECS
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
立即查看
开发者软件
开发者常用软件,超百款实用软件一站式提供
立即查看
-
热门标签
算法并行
klocwork
h3c
kali
无线信号
http服务器
webclient重复发送
scuc
simpleadapter
凸包
proxy_pass
游程长度编码
highlighter
administrator
ie8 javaweb 文件下载
和 able导入到 ord中
失灵
java android开发
icepak二次开发
博客访问地图
-
社区推荐
更多>
- 好东西来了!2017云栖大会400+份重磅资料下载
- 叮咚!您有一份2017杭州云栖大会参会指南待签收【持续更...
- 重磅发布背后:POLARDB的中国故事
- 传统应用层逻辑分库DB迁移阿里云DRDS+RDS分布式数...
- 海量用户实时定位和圈人 - 团圆社会公益系统(位置寻人\...
- 京颐CTO宋建康:如何应对系统高度分化异构的挑战,打造不...
- 经典网络迁移VPC最佳实践
- 揭秘IPHONE X刷脸认证的技术奥秘
- 5大场景护航企业成长,实例解析阿里云适应性网络架构
- 专访阿里云异构计算负责人:异构计算,GPU、FPGA、A...
-
看了此文的人还看了
- 循环到第二次时scanf函数会自动获取\n,这个是为什么...
- eclipse-convertView cannot b...
- c++-命名空间中定义的类是否需要在同一文件中给出实现方...
- c语言 摘桃子问题
- ext.net c#-Ext.Net1.7 后台操作页面...
- dcom连接-Delphi中DCOM连接时出现拒绝访问
- javascript在一个function里控制load...
- javaweb连接mysql问题
- 请大神赐教 下面代码中出现错误 当前上下文中不存在名...
- 在for循环执行SQLcmd.ExecuteNonQue...
热门活动更多>
- 云服务器9.9元抢购
6款产品 6个月免费体验
查看详情>
- 搭建网站/应用首选
轻量应用服务器 45元/月
查看详情>
- 全新云服务器限时2折起
I/O优化,独享IP,性能提升20%
查看详情>
热点导航
- 高性能云服务器2折起
- 域名查询
- 网站域名whois查询
- 云计算
- 网站服务器价格
- 域名注册
- bootstrap table
- MySQL三节点
- MySQL读写分离
- 技术资料
- 阿里云邀请码
- product
- cfbundleidentifier报错
- echarts地图json数据
- webstorm开发javaweb
- 社区
- 技术
- 滚动条
- mysql upgrade
- ie浏览器不加载样式
- c primer 第五版
- java实现opc client
- post请求
- 支付宝同步和异步通知
- product1
- 三合一云商城建设
- 软件安装环境配置
- 技术
- 钉钉收费
- 问答
- 数据算法竞赛