编译PPAPI的media_stream_video示例

最后更新于:2022-04-01 16:02:54

[**Windows下从源码编译CEF**](http://blog.csdn.net/foruok/article/details/50498740)一文编译了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 ~~~ 效果如下: ![video](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-02-22_56caac3397699.jpg "") 仅止于此? 继续研究中…… 相关文章参考: - [**CEF Windows开发环境搭建**](http://blog.csdn.net/foruok/article/details/50468642) - [**CEF加载PPAPI插件**](http://blog.csdn.net/foruok/article/details/50485448) - [**VS2013编译最简单的PPAPI插件**](http://blog.csdn.net/foruok/article/details/50485461) - [**理解PPAPI的设计**](http://blog.csdn.net/foruok/article/details/50486788) - [**PPAPI插件与浏览器的交互过程**](http://blog.csdn.net/foruok/article/details/50494061) - [**Windows下从源码编译CEF**](http://blog.csdn.net/foruok/article/details/50498740)
';