none
Active DLL 給其他程式語言使用 RRS feed

  • 問題

  • 我在VB6.0 有寫了幾個函數 並且搜尋了一些資料 tlbimp.exe 有資料說 可以用這個 轉換 可是我在VS 目錄下找不到 也有 網站說 可以 用LINK export http://wenwen.soso.com/z/q163413348.htm 但是最終都已失敗收場 我VB寫的DLL 還有引用 API 等等 有三個函數 想要給其他程式語言使用 EX: C++ C# DELPHI 請問我有什麼發法媽?!?! PS. 請問 Active 有什麼用 位什麼 微軟 再VB編譯中 只能編譯這個
    2009年12月27日 上午 05:53

解答

  • tlbimp.exe 本來就是給 .Net 來處理 com 元件的,對 vb6 當然沒用。

    你給的網址那個是使用編譯漏洞,很早就有人寫過,但是因為 vb6 本身編譯時不支援 /MT 多緒選項,所以那個東西看看就好,沒有實際用處。

    先把既有討論關於 dll 類型看一遍:
    http://social.msdn.microsoft.com/Search/zh-TW/?Refinement=112&query=dll%20%u985e%u578b

    過去 vb6 特殊記憶體定址原因,讓混合語言下,vb6 只能做主語言,從 qb 到 vb6 年代,一直是這樣,也就是說只有 vb6 呼叫別人的份,其他人就比較困難。

    而 vb 的 ActiveX DLL (COM DLL / OLE DLL) 是透過 oleaut32 的架構讓別的語言呼叫,所以目標電腦本身要有 vb runtime library 跟型別程式庫,所以散布性不佳,真正開發商仍然選用 vc 來開發,不會使用 vb6 來開發。

    ActiveX OCX / DLL / EXE (COM / OLE / Automation) 大概是微軟 1995 ~ 2001 主推的共用架構,但是在 2000 年尾、2001 年初時,已經認為這樣的架構已經不符時代潮流,所以大概也是這時候決定讓 vb6 走入墳場,只是當時大部分人都還不知道,當時本來還有個 VSA 計畫,最後也夭折變成現在的 VSTO ,所以變成現在的 .Net Managed DLL 取代過去的 COM DLL ,而過去大量的既有資源又拋不掉,所以形成現在各種類型的 dll 混戰年代。

    為什麼 vb6 只能編譯這些?因為這是從 qb 轉型成 vb 時,微軟就把 vb 定位為應用程式開發工具有關,所以當時 vb6 轉 vbnet 時,vc++ 可以變成 c# 與 c++ ,在實務上來說,vb 也可以變成 b# 與 vb ,但是微軟仍然選擇砍掉,這也是一般 vc 開發者看不起 vb 開發者的根本原因,因為 vb 本來就是一套跛腳的開發工具。

    到了 .Net 仍然如此,vbnet 與 c# 仍然比 vc++ 矮一截,但是 c# 開發者很容易轉到 vc++ 去,所以也曾有多人大聲疾呼,要學就學 c# ,進可攻退可守,學 vbnet 永遠只能跛腳。

    vb6 以前的年代,微軟想同時賣 vb / vc 兩套編譯器,所以 vb 很簡單,但不能開發低階元件,vc 很強大,但是不好用。
    到了 .Net ,vbnet 有點是附屬的意味,很多元件只有 c# 範例,或是 c# 範例先有,隔了幾個月才有 vbnet 範例,所以也有人曾預測 vb 會死在 .Net 上,不過微軟官方有發過新聞稿說過微軟會持續開發 vb ,且每年的程式語言排名,vb 仍維持前5名次,所以暫時還會是這樣。

    你可以參考一些其他公司的 basic 編譯器,不過有些編譯器重學的幅度滿大的,且相關技術支援少,到最後會覺得還不如學 vc ...
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2009年12月27日 上午 10:05