http://www.javaworld.com.tw/jute/post/view?bid=5&id=203226&sty=1&tpg=13&age=0
—————————————————————————————————————————————————————————— 小弟最近正在研究jmf。由於個人的需求需要修改jmf 的原生程式,因此就必須重新編譯整個jmf的source code。在編譯的過程,即使按照說明文件去操作,仍然會產生一些編譯上的問題,而這些編譯上的問題在官方網站找不到解決的方式。小弟已經把編譯的問題解決了我會在以下的文章說明解決的方式。(一)需要的必備的東西:(1) jdk(小弟是使用1.4)(2) nmake1.5(3)Java Media Framework 2.1.1e Binary(4)mspdb60.dll其中,(3)的下載位置是:(4)的下載位置是:(2)下載位置是:(二)安裝方式: (1)執行nmake1.5.exe後會產生二個文件:NMAKE.EXE和NMAKE.ERR 把這二個文件放在相同的目錄下。例如:c:\make 再來,設定路徑。例如:%path%;c:\make (2)解壓縮下載的Binary壓縮檔後,把derived和derived_win32二個資料匣 copy到 jmf的source code目錄內,即%JMFHOME% 再來**這一點很重要請不要遺漏。copy derived\com裡的資料匣到 %JMFHOME%\src\share裡,把原來的com資料匣蓋掉 (3)把mspdb60.dll 放到C:\WINDOWS\system32(三)設定buildjmf.bat 在%JMFHOME%\doc\buildinfo裡就有範例文件了,可以參考那裡的東西。 小弟列出我的設定方式給大家參考:-------------------------------------------------------------------------------------------------------set JAVAHOME=C:\jdk1.4set JMFHOME=C:\JMF_2.1.1e_SourceCodeset SOUNDCLASSES=%JMFHOME%\javasoundset MSDEVHOME=F:\v\VC98set oldpath=%path%set oldclasspath=%CLASSPATH%set CLASSPATH=%JMFHOME%\build\win32\lib;%SOUNDCLASSES%\sound.jar;.set path=%JMFHOME%\build\win32\lib;%SOUNDCLASSES%\win32;%path%set path=%MSDEVHOME%\bin;%path%cd %JMFHOME%\build\win32nmakenmake imageset path=%oldpath%set CLASSPATH=%oldclasspath%------------------------------------------------------------------------------------------------------**這裡有一點請大家要注意很重要,MSDEVHOME環境變數各位可能會設成 MSDEVHOME=C:\Program Files\Microsoft Visual Studio\VC98 設這樣是沒錯的,但是實際在編譯時會產生錯誤出來。經過小弟 測式結果,發現,在編譯時,該變數值只能讀到C:\Program Files,後面的 路徑名稱就讀不到了。 因此,斷定MSDEVHOME變數是有長度的限制的 超過了該長度,後面的路徑名稱就讀不到了。小弟的解決方式就是路徑 的設定盡量短小。我把原來的Microsoft Visual Studio移到F:\ 接著把Microsoft Visual Studio目錄名稱改成v。(四)執行buildjmf.bat(五)產生編譯好了之後,整個class、dll、與執行檔都放在 %JMFHOME%\build\win32裡。 其中,jmf的執行檔是放在 %JMFHOME%\build\win32\image\bin裡
補充說明為什麼編譯時要用到(1)ava Media Framework 2.1.1e Binary (2)mspdb60.dll以(1)來說,因為sun並沒有完整公開 jmf的source code(一小部分),舉如: com.sun.media.rtp 這個package就沒有公開了。在sourcecode的目錄內是找不到rtp這個package的。但是,程式中會用到該套件,因此若是沒有這個Binnary的話,編譯會出現錯誤訊息(即找不到某個類別)。是的,sun把一小部分未公開的jmf source code都編譯成binary檔了。(2)mspdb60.dll是在編譯jmf的原生程式要用到的。沒加入該DLL在編譯 JMF的原生程式時會跳出一個訊息方塊跟你說找不到mspdb60.dl錯誤 訊息。l