為什么是cygwin?
cygwin是所有windows的編譯平臺中,和opencore本來的編譯方式最接近的一個,mingw中有很多的頭文件和linux下的接口沒有實(shí)現(xiàn),而vs2005等微軟的平臺又和gnu的語法有差異,而且vs2005不支持makefile的這種編譯方式。因此采用cygwin是最簡便,需要改動最小的方式。
在cygwin下編譯通過的步驟:
1,在oscl/oscl/config 下,將linux文件夾copy一份到CYGWIN_NT-5.1
2,將tools_v2/build/make/下的linux.mk copy為 CYGWIN_NT-5.1.mk
3,cygwin下的stuct tm沒有變量tm_gmtoff,因此,需要改變oscl/oscl/osclbase/src/oscl_time.inl
其中的OSCL_COND_EXPORT_REF OSCL_INLINE int32 TimeValue::get_local_time()函數(shù)改為:
4,如果文件pvmi\pvmf\build\make\local.mk中的SRCS :沒有加上文件pvmf_event_handling.cpp
加上這個源文件(這個bug packetvideo應(yīng)該解了)。
在cygwin下編譯的時候,系統(tǒng)有可能報告錯誤“extern_tools_v2/bin/linux/make: cannot execute binary file”
這是因?yàn)閛pencore將路徑extern_tools_v2/bin/linux/給加到PATH環(huán)境變量下面去了,處理的辦法是,要么從PATH環(huán)境變量下去掉extern_tools_v2/bin/linux/,或者刪掉extern_tools_v2/bin/linux/文件夾下的內(nèi)容。
本文只是關(guān)注如何編譯,并沒有涉及到如何在windows下完成播放,作者已經(jīng)完成了采用SDL作為輸出方式的采用opencore框架的一個簡單的命令行播放器,啥時候有空了,我會發(fā)布出來的。