2007年4月7日 星期六

自找麻煩 java -> dll -> VB6.0

最近自找麻煩地想將寫好的 java 給 VB6.0 呼叫使用 ~~~

很天真的 !! 第一個念頭就是要將java寫好的東西轉成dll
嘿嘿~~轉成 dll 後就以為能很輕鬆的給 VB 使用啦 !!
這時找到ㄧ個輔助的工具 Excelsior JET 4.8 => 能將 class 轉成 dll
當然馬上下載試用版來用用囉 !!
很順利的將 class 轉換成 dll ~~
開啟VB6 => 專案 => 設定引用項目 => 瀏覽 => 選取自訂dll
很遺憾的當然沒那麼順利~~~跳出一個令人難過的畫面!!


沒關係當然沒那麼容易被擊敗囉 !!!開啟DOS模擬視窗 (開始 => 執行 => cmd)
使用手動方式登入 dll => C:> regsvr32 jet.dll
阿哩哩~~又出現狀況囉 !!


不過也因為如此 , 在網路上找了很多資訊 !!
也才知道原來 dll 也有分類 :
1. 標準 dll : copy 過來就可以用的啦~~
2. ActiveXdll : 需要有 DllRegisterServer , 有並且需要註冊後才能使用
参考網站 (當然還有很多不過都沒記下來..=.="):
http://www.china-askpro.com/msg9/qa92.shtml
(簡體的網站 可以利用google功能轉為繁體網頁 , 還不賴喔 !!)
VB因該只能使用 ActiveXdll ....=.="

之後又找到可以利用微軟的 jvm(msjvm) 轉換成讓VB使用
1. 製作好 .class
2. 將製作好的.class copy to C:\Winnt\Java\Trustlib\
3. javareg /register /class:MSJVMTest /typelib:MSJVMTest.tlb /progid:MSJVMTest
4. 参考網頁是寫 "select "References..." from the "Project" menu in VB"
不過我就是一直無法加入到VB內 , 也就無法使用

檢討 :
這個方式的失敗 , 因該是我是使用sun jvm 編譯成class ,
因該要使用msjvm 編譯 => 個人認為.......
不過我找不到如何使用msjvm去做編譯 ,
我下載到的msjvm 也沒有 jvm.exe 檔可以去下編譯指令....
真是怪怪~~~~@@"
参考網站 :
http://archives.java.sun.com/cgi-bin/wa?A2=ind0003&L=jsp-interest&F=&S=&P=100436
http://support.microsoft.com/kb/173790/zh-tw
http://www2.sys-con.com/ITSG/virtualcd/Java/archives/0411/hightower/index.html
http://visualbasic.ittoolbox.com/groups/technical-functional/visualbasic-l/call-java-objects-from-vb-321298
=>這個人遇到跟我一樣的問題 , 不過我還是解決不了 ...=.="

目前還沒解決這個問題 , 誰叫自己C or C++功力爛 , 不敢直接使用C
打算在研究 JNI , 透過 JNI -> C -> dll -> 給VB用
不過仍然擔心做出來的 dll => VB6不能使用~~

再不行就只好乖乖用VB6寫拉!!
為何一定要用VB6開發呢 ??? => 因為學校作業
要開發一個最佳化的系統 , 老師只提供Evolver (很鳥~~)
而Evolver又只提供VC , VB 開發環境 ......所以 ........無言
本想用自己習慣的java來開發核心部份 , 剩下畫面再請別的同學用VB6開發
自己VB6功力太差~~~哈哈!!
時間又不過,如果時間夠多因該能花點時間研究其他最佳化的工具~~~

反正就是自己自找麻煩..........廢話太多~~到此結束~~掰 ...

沒有留言:

張貼留言

感謝大家提供意見喔 !! 東仔 !!