编译PPAPI的media_stream_video示例

Windows下从源码编译CEF一文编译了CEF和PPAPI的C++接口对应的静态库,现在来编译media_stream_video示例了。

使用VS 2013来编译。

foruok原创,如需转载请关注foruok的微信订阅号“程序视界”联系foruok。

VS项目的创建

新建一个名为media_stream_video的Win32项目,类型选DLL,去掉预编译头文件stdafx.h和stdafx.cpp,并且在项目属性–>配置属性–>C/C++–>预编译头,把预编译头选项的值设置为不使用预编译头。

删除自动生成的media_stream_video.cpp。

在“配置属性–>C/C++–>代码生成–>运行库”中设置为MT。

字符集使用 Unicode 字符集。

添加下列包含目录:

E:\sources\CEF\2526\chromium\src\cef\binary_distrib\cef_binary_3.2526.1364.gf6bf57b_windows32 //为了CEF
E:\sources\CEF\2526\chromium\src\third_party\khronos //为了GLES
E:\sources\CEF\2526\chromium\src  //为了ppapi
E:\sources\CEF\2526\chromium\src\gpu //这个是为了gl2chromium.h

拷贝chromium\src\ppapi\examples\media_stream_video\media_stream_video.cc到项目目录下,并添加到工程。

添加下列附加库路径:

E:\sources\CEF\2526\chromium\src\cef\binary_distrib\cef_binary_3.2526.1364.gf6bf57b_windows32\Release  //所有的lib都拷贝到这里吧,省事儿。

添加ppapi_cpp.lib、ppapi_cpp_objects.lib、libGLESv2.dll.lib、ppapi_gles2.lib等依赖库。

基本就这样了。

编译与运行

如果你编译工程,会遇到类似下面的链接错误:

media_stream_video.obj : error LNK2001: 无法解析的外部符号 _GLES2EnableVertexAttribArray@4
media_stream_video.obj : error LNK2001: 无法解析的外部符号 _GLES2UseProgram@4
media_stream_video.obj : error LNK2001: 无法解析的外部符号 _GLES2VertexAttribPointer@24
media_stream_video.obj : error LNK2001: 无法解析的外部符号 _GLES2ClearColor@16
media_stream_video.obj : error LNK2001: 无法解析的外部符号 _GLES2GetAttribLocation@8
media_stream_video.obj : error LNK2001: 无法解析的外部符号 _GLES2ActiveTexture@4

这是因为media_stream_video需要链接ppapi_gles2.lib,而编译CEF时没有生成这个库。我们得手动编译下。

编译ppapi_gles2

默认编译CEF时,并没生成ppapi_gles2.lib这个文件。不过幸运的是,chromium\src\out\Release\obj\ppapi目录下生成了ppapi_gles2.ninja文件,它是ppapi_gles2.lib的构建文件。同时Release版本的构建文件chromium\src\out\Release\build.ninja内起始也添加了ppapi_gles2的build指令和subninja指令,只是build all目标中没有把ppapi_gles2添加进去。所以,其实一切都为我们准备好了,在chromium\src\out\Release目录下执行“ninja ppapi_gles2”命令就可以把ppapi_gles2.lib编译出来。

这也是手动编译部分模块的方法。

运行

用下面的命令可以运行:

cefsimple.exe --ppapi-out-of-process --register-pepper-plugins="E:\sources\CEF\2526\chromium\src\cef\binary_distrib\cef_binary_3.2526.1364.gf6bf57b_windows32\Release\media_stream_video.dll;application/x-ppapi-example-media-stream-video" --url=file:///E:/sources/CEF/2526/chromium/src/cef/binary_distrib/cef_binary_3.2526.1364.gf6bf57b_windows32/Release/media_stream_video.html

效果如下:

编译PPAPI的media_stream_video示例_第1张图片

仅止于此?

继续研究中……

相关文章参考:

  • CEF Windows开发环境搭建
  • CEF加载PPAPI插件
  • VS2013编译最简单的PPAPI插件
  • 理解PPAPI的设计
  • PPAPI插件与浏览器的交互过程
  • Windows下从源码编译CEF

你可能感兴趣的:(OpenGL,chromium,CEF,gles,PPAPI)