我想在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插件相关推荐

  1. PPAPI插件与浏览器的交互过程

    上一篇理解了一下PPAPI的设计,并从代码角度理解了一下相关主题,这篇文章关注下面几点: 插件实例对象的创建与使用流程 实例大小的确认 渲染(绘图) 处理输入事件 foruok原创,如需转载请关注fo ...

  2. PPAPI插件的绘图与输入事件处理

    在PPAPI插件与浏览器的交互过程一文中学习了PPAPI插件与浏览器的交互流程.渲染逻辑.输入事件的处理逻辑,这次我们改造一下graphics_2d_example示例,加入处理鼠标事件的逻辑,演示一 ...

  3. 属性浏览器控件QtTreePropertyBrowser编译成动态库(设计师插件)

    文章目录 一.回顾 二.动态库编译 1.命令行编译动态库和测试程序 2.vs工具编译动态库和测试程序 3.安装文档 4.测试文档 三.设计师插件编译 1.重写QDesignerCustomWidget ...

  4. mysql 源码 sln_在windows下使用vs2013编译和调试mysql源代码

    在windows下使用vs2013编译和调试mysql源代码 1. 准备工作 1)OS:win10 + VS2013 2)mysql 源码(windows版):mysql-5.6.25.zip 3)p ...

  5. Dlib简介及在windows7 vs2013编译过程

    Dlib是一个C++库,包含了许多机器学习算法.它是跨平台的,可以应用在Windows.Linux.Mac.embedded devices.mobile phones等.它的License是Boos ...

  6. vs2013编译 protoBuffer编译出现的问题

    2019独角兽企业重金招聘Python工程师标准>>> 编译protobuffer ,出现了两个问题 1.vs加载项目后,会发现min函数 没有引入头文件   #include &l ...

  7. vs2013编译boost1.55.0 32/64位

    在使用vs2013编译boost-1.55.0之前,先要给boost做下修改: boost_1_55_0\boost\intrusive\detail\has_member_function_call ...

  8. Android-实现一个简单的自动翻译插件

    目录 实现一个简单的自动翻译插件 实现思路 几个重要的实现方法 1.解析xml 2.写文件 3. 翻译 使用 实现一个简单的自动翻译插件 最近在开发项目是要将Android相关的资源进行国际化,需要将 ...

  9. win7·64bit+VS2013+opencv的简单配置

    win7·64bit+VS2013+opencv的简单配置 win7x64 vs2013 opencv 如果你不需要: 在调试的时候看OpenCV的源代码: 添加新的功能支持,比如GPU. OpenC ...

  10. 【UI插件】简单的日历插件(下)—— 学习MVC思想

    前言 我们上次写了一个简单的日历插件,但是只是一个半成品,而且做完后发现一些问题,于是我们今天尝试来解决这些问题 PS:距离上次貌似很久了 上次,我们大概遇到哪些问题呢: ① 既然想做一套UI库,那么 ...

最新文章

  1. Unity中那些事半功倍的好插件
  2. 区块链BaaS云服务(19)趣链Hyperchain
  3. c语言 自动测试,C语言测试。自己实现scandir 函数
  4. VTK:Medical之GenerateCubesFromLabels
  5. LeetCode 1689. 十-二进制数的最少数目(脑筋急转弯)
  6. mysql 查看表格scott_mysql查询学习第一天,针对scott
  7. Tunnelling HTTP Traffic Through XSS Channels.pdf
  8. 从张量积(tensor product)到多重线性代数(multilinear algebra)
  9. Pycharm 设置python文件自动生成头部信息模板
  10. Java直连Access
  11. Chapter4.5:根轨迹法考研参考题
  12. uni-app 小程序开发 (一)
  13. 微信 百度云 服务器繁忙,百度网盘搜索功能失效提示操作过于频繁如何解决
  14. 基于深度学习的目标检测的IOU损失函数介绍
  15. 2016年计算机视觉机器学习领域国内重要会议 汇总 (持续更新)
  16. 你猜我猜不猜 (猜数字游戏) 快来小玩一把叭
  17. c语言一个数等于素数的乘积,C语言实现判断一个数是否为素数并求100以内的所有素数...
  18. 就读体验丨香港科技大学工学院科技领导及创业(TLE)理学硕士学位课程(上)
  19. 用Java实现定义一个大写字母,把它转换为小写字母后显示出来
  20. 记账理财,就选我爱管账

热门文章

  1. 如何写好一篇博客(文章)
  2. ISO14443、15693、18000体系分析
  3. Win9X、2000、XP、2003所有注册表设置
  4. 深入浅出SCSI子系统(六)SCSI 磁盘驱动
  5. 计算机病毒存于什么,计算机病毒存在于哪里
  6. win10下安装Jekyll(rubyinstaller-devkit)
  7. webgame源码下载及网页游戏开发资源精华集合
  8. 华为手机bootloader上锁回锁教程及ADB工具下载——精华帖
  9. 【Redis】Redis入门详解(一)
  10. AMD 2020届IC校招笔试题