發表文章

目前顯示的是 11月, 2009的文章

VS2003呼叫VS2005的COM DLL

圖片
在.net的環境寫作程式預設就提供了相當多的類別可供使用,寫作程式上也變的相當的方便,但有時候會遇到舊系統的需求新增,或是必須要撰寫DLL(組件)來讓其他使用者做使用的情形;而在這樣的情況,通常會撰寫類別庫,也就是產生出DLL的檔案來供其他人方便使用。而在使用.Net DLL時,在相同版本的.net framework也很方便,只要用加入參考的方式將該DLL加入參考後,就可以開始使用相關的功能;但是在VS2003與VS2005之間互通時卻無法使用加入參考的方式去做,又或者當我們必須要將DLL提供給網頁、VB6這樣的開發環境時,該怎麼辦呢?這篇主要說明一下在VS2003的環境(.net framework 1.1)要怎麼樣去使用VS2005(.net framework 2.0)的COM DLL。 在進入主題之前,這邊先說明一下當要將DLL提供給網頁(ASP)或是VB6使用時應該要怎麼做;在後續同樣的也必須要經過這些步驟才能順利的讓VS2003使用相關的DLL。 首先,要開放給像是VB6這樣的程式使用時,必須要將DLL開放COM介面,讓其他的程式透過COM介面來呼叫,而要怎麼實作呢?請參考Will保哥的文章,相當的清楚,位置再下面這邊 http://blog.miniasp.com/post/2008/07/How-to-write-COM-component-using-NET.aspx 這邊補充一個部分,要將.net組件加入到GAC中時,必須要簽署組件,也就是設定強式名稱(Strong Name),不然會加不進去,簽署的位置會像下圖這樣 好,那麼參考完保哥的文章後,相信大家都可以實作出COM DLL了,接下來就是如何在VS2003中去使用了。 在將相關的DLL安裝到系統上之後,開啟VS2003,選擇加入參考之後,在選單中可以看到我們註冊到系統中的DLL,但是選取後卻會得到一個無情的錯誤 沒關係,沒辦法從IDE加入,還有CreateObject可以使用,所以用了像下面這樣的方式 Dim A As Object = CreateObject("RFTagSDKs.RD1623") 結果卻得到了一個無法產生ActiveX的錯誤訊息,怎麼會這樣呢,主要就是因為.net framework版本的關係;那要怎麼去解決呢?可以參考下面這篇的方式 http:/