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:sourcesCEF2526chromiumsrccefinary_distribcef_binary_3.2526.1364.gf6bf57b_windows32 //为了CEF
E:sourcesCEF2526chromiumsrc hird_partykhronos //为了GLES
E:sourcesCEF2526chromiumsrc //为了ppapi
E:sourcesCEF2526chromiumsrcgpu //这个是为了gl2chromium.h
拷贝chromiumsrcppapiexamplesmedia_stream_videomedia_stream_video.cc到项目目录下,并添加到工程。
添加下列附加库路径:
E:sourcesCEF2526chromiumsrccefinary_distribcef_binary_3.2526.1364.gf6bf57b_windows32Release //所有的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这个文件。不过幸运的是,chromiumsrcoutReleaseobjppapi目录下生成了ppapi_gles2.ninja文件,它是ppapi_gles2.lib的构建文件。同时Release版本的构建文件chromiumsrcoutReleaseuild.ninja内起始也添加了ppapi_gles2的build指令和subninja指令,只是build all目标中没有把ppapi_gles2添加进去。所以,其实一切都为我们准备好了,在chromiumsrcoutRelease目录下执行“ninja ppapi_gles2”命令就可以把ppapi_gles2.lib编译出来。
这也是手动编译部分模块的方法。
运行
用下面的命令可以运行:
cefsimple.exe --ppapi-out-of-process --register-pepper-plugins="E:sourcesCEF2526chromiumsrccefinary_distribcef_binary_3.2526.1364.gf6bf57b_windows32Releasemedia_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
效果如下:
仅止于此?
继续研究中……
相关文章参考: