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)的下載位置是:
http://www.sun.com/software/communitysource/jmf/download.xml
(4)的下載位置是:
http://www.dll-files.com/dllindex/dll-files.shtml?mspdb60
(2)下載位置是:
http://support.microsoft.com/kb/132084

(二)安裝方式:
(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.4
set JMFHOME=C:\JMF_2.1.1e_SourceCode
set SOUNDCLASSES=%JMFHOME%\javasound
set MSDEVHOME=F:\v\VC98
set 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\win32
nmake
nmake image
set 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就沒有公開了。在source
code的目錄內是找不到rtp這個package的。但是,程式中會用到
該套件,因此若是沒有這個Binnary的話,編譯會出現錯誤訊息(即找不到某個類別)。是的,sun把一小部分未公開的jmf source code都編譯成binary檔了。

(2)mspdb60.dll是在編譯jmf的原生程式要用到的。沒加入該DLL在編譯
JMF的原生程式時會跳出一個訊息方塊跟你說找不到mspdb60.dl錯誤
訊息。l
posted on 2012-05-08 19:18  网络大豆  阅读(250)  评论(0编辑  收藏  举报