VS2013编译最简单的PPAPI插件
我想在CEF里使用PPAPI,CEF使用VS 2013 Update 4编译。因此我尝试了使用VS 2013来编译PPAPI插件。
PPAPI的代码在这里:https://chromium.googlesource.com/chromium/src/ppapi/,可以用下列命令check出来:
git clone https://chromium.googlesource.com/chromium/src/ppapi
- 1
也可以下载master分支的tgz包。
VS工程
新建一个Win32项目,类型选DLL,去掉预编译头文件stdafx.h和stdafx.cpp,并且在项目属性–>配置属性–>C/C++–>预编译头,把预编译头选项的值设置为不使用预编译头。
复制ppapi/examples/stub/stub.c文件到项目文件夹下,并添加到项目里。做简单修改,打印点儿调试信息。stub.c内容如下:
// Copyright (c) 2010 The Chromium Authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.// This is the simplest possible C Pepper plugin that does nothing. If you're// using C++, you will want to look at stub.cc which uses the more convenient// C++ wrappers.#include <stddef.h>#include <stdint.h>#include <Windows.h>#include <tchar.h>#include "ppapi/c/pp_errors.h"#include "ppapi/c/pp_module.h"#include "ppapi/c/ppb.h"#include "ppapi/c/ppp.h"#include "ppapi/c/pp_instance.h"#include "ppapi/c/ppp_instance.h"PP_Module g_module_id;PPB_GetInterface g_get_browser_interface = NULL;PP_EXPORT int32_t PPP_InitializeModule(PP_Module module_id, PPB_GetInterface get_browser_interface) { // Save the global module information for later. g_module_id = module_id; g_get_browser_interface = get_browser_interface; OutputDebugString(_T("PPP_InitializeModule was called\r\n")); return PP_OK;}PP_EXPORT void PPP_ShutdownModule() {OutputDebugString(_T("PPP_ShutdownModule was called\r\n"));}PP_EXPORT const void* PPP_GetInterface(const char* interface_name) { // You will normally implement a getter for at least PPP_INSTANCE_INTERFACE // here. OutputDebugString(_T("PPP_GetInterface was called\r\n")); return NULL;}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
PPAPI plugin
参考https://code.google.com/p/ppapi/wiki/GettingStarted,C语言版的PPAPI plugin,必须实现下列函数:
- PPP_InitializeModule,插件加载时会被调用,返回0表示成功
- PPP_ShutdownModule,插件卸载时会被调用
- PPP_GetInterface,浏览器创建插件实例时会被调用
这些函数在ppp.h中定义。实现这些函数时,使用PP_EXPORT宏修饰一下即可。
一个DLL,实现了上述三个函数,就可以做为PPAPI插件来用了,不过只是样子货,只能看到被加载、创建,干不了什么实际的事儿,是个PPAPI 版本的Hello World。
后面我们会改造stub,显示点东西出来。
相关文章参考:
- CEF Windows开发环境搭建
- CEF加载PPAPI插件
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
VS2013编译最简单的PPAPI插件相关推荐
- PPAPI插件与浏览器的交互过程
上一篇理解了一下PPAPI的设计,并从代码角度理解了一下相关主题,这篇文章关注下面几点: 插件实例对象的创建与使用流程 实例大小的确认 渲染(绘图) 处理输入事件 foruok原创,如需转载请关注fo ...
- PPAPI插件的绘图与输入事件处理
在PPAPI插件与浏览器的交互过程一文中学习了PPAPI插件与浏览器的交互流程.渲染逻辑.输入事件的处理逻辑,这次我们改造一下graphics_2d_example示例,加入处理鼠标事件的逻辑,演示一 ...
- 属性浏览器控件QtTreePropertyBrowser编译成动态库(设计师插件)
文章目录 一.回顾 二.动态库编译 1.命令行编译动态库和测试程序 2.vs工具编译动态库和测试程序 3.安装文档 4.测试文档 三.设计师插件编译 1.重写QDesignerCustomWidget ...
- mysql 源码 sln_在windows下使用vs2013编译和调试mysql源代码
在windows下使用vs2013编译和调试mysql源代码 1. 准备工作 1)OS:win10 + VS2013 2)mysql 源码(windows版):mysql-5.6.25.zip 3)p ...
- Dlib简介及在windows7 vs2013编译过程
Dlib是一个C++库,包含了许多机器学习算法.它是跨平台的,可以应用在Windows.Linux.Mac.embedded devices.mobile phones等.它的License是Boos ...
- vs2013编译 protoBuffer编译出现的问题
2019独角兽企业重金招聘Python工程师标准>>> 编译protobuffer ,出现了两个问题 1.vs加载项目后,会发现min函数 没有引入头文件 #include &l ...
- vs2013编译boost1.55.0 32/64位
在使用vs2013编译boost-1.55.0之前,先要给boost做下修改: boost_1_55_0\boost\intrusive\detail\has_member_function_call ...
- Android-实现一个简单的自动翻译插件
目录 实现一个简单的自动翻译插件 实现思路 几个重要的实现方法 1.解析xml 2.写文件 3. 翻译 使用 实现一个简单的自动翻译插件 最近在开发项目是要将Android相关的资源进行国际化,需要将 ...
- win7·64bit+VS2013+opencv的简单配置
win7·64bit+VS2013+opencv的简单配置 win7x64 vs2013 opencv 如果你不需要: 在调试的时候看OpenCV的源代码: 添加新的功能支持,比如GPU. OpenC ...
- 【UI插件】简单的日历插件(下)—— 学习MVC思想
前言 我们上次写了一个简单的日历插件,但是只是一个半成品,而且做完后发现一些问题,于是我们今天尝试来解决这些问题 PS:距离上次貌似很久了 上次,我们大概遇到哪些问题呢: ① 既然想做一套UI库,那么 ...
最新文章
- Unity中那些事半功倍的好插件
- 区块链BaaS云服务(19)趣链Hyperchain
- c语言 自动测试,C语言测试。自己实现scandir 函数
- VTK:Medical之GenerateCubesFromLabels
- LeetCode 1689. 十-二进制数的最少数目(脑筋急转弯)
- mysql 查看表格scott_mysql查询学习第一天,针对scott
- Tunnelling HTTP Traffic Through XSS Channels.pdf
- 从张量积(tensor product)到多重线性代数(multilinear algebra)
- Pycharm 设置python文件自动生成头部信息模板
- Java直连Access
- Chapter4.5:根轨迹法考研参考题
- uni-app 小程序开发 (一)
- 微信 百度云 服务器繁忙,百度网盘搜索功能失效提示操作过于频繁如何解决
- 基于深度学习的目标检测的IOU损失函数介绍
- 2016年计算机视觉机器学习领域国内重要会议 汇总 (持续更新)
- 你猜我猜不猜 (猜数字游戏) 快来小玩一把叭
- c语言一个数等于素数的乘积,C语言实现判断一个数是否为素数并求100以内的所有素数...
- 就读体验丨香港科技大学工学院科技领导及创业(TLE)理学硕士学位课程(上)
- 用Java实现定义一个大写字母,把它转换为小写字母后显示出来
- 记账理财,就选我爱管账