天天看點

編譯PPAPI的media_stream_video示例VS項目的建立編譯與運作

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: 無法解析的外部符号 [email protected]

media_stream_video.obj : error LNK2001: 無法解析的外部符号 [email protected]

media_stream_video.obj : error LNK2001: 無法解析的外部符号 [email protected]

media_stream_video.obj : error LNK2001: 無法解析的外部符号 [email protected]

media_stream_video.obj : error LNK2001: 無法解析的外部符号 [email protected]

media_stream_video.obj : error LNK2001: 無法解析的外部符号 [email protected]

這是因為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示例VS項目的建立編譯與運作

僅止于此?

繼續研究中……

相關文章參考:

  • CEF Windows開發環境搭建
  • CEF加載PPAPI插件
  • VS2013編譯最簡單的PPAPI插件
  • 了解PPAPI的設計
  • PPAPI插件與浏覽器的互動過程
  • Windows下從源碼編譯CEF

繼續閱讀