在您的代碼中,您已經(jīng)成功使用了RegAsm命令將DLL注冊為COM組件,并在VB6中成功引用了該組件的類型庫文件(TLB文件)。此外,您還在VB6代碼中聲明了一個YCImageDo類型的對象,并成功創(chuàng)建了該對象。
成都創(chuàng)新互聯(lián)公司從2013年開始,先為尤溪等服務建站,尤溪等地企業(yè),進行企業(yè)商務咨詢服務。為尤溪企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
但是,當您嘗試使用YCImageDo對象的屬性和方法時,卻發(fā)現(xiàn)這些成員不可見。這可能是因為在編寫DLL代碼時您沒有正確地聲明這些成員的可見性。
在VB.NET中,您可以使用"Public"關鍵字來聲明一個類型的成員(屬性、方法、過程等)對外可見,而使用"Private"關鍵字則聲明該成員僅在類型內(nèi)可見。如果您希望YCImageDo類型的成員在VB6代碼中可見,則應將這些成員聲明為Public類型。
例如,如果您希望YCImageDo類型擁有一個名為"GetImage"的方法,則可以在DLL代碼中按如下方式聲明該方法:
Public Function GetImage() As String
' 在這里編寫方法的代碼
End Function
同樣,如果您希望YCImageDo類型擁有一個名為"ImagePath"的屬性,則可以在DLL代碼中按如下方式聲明該屬性:
Public Property ImagePath As String
很簡單,點擊菜單“項目”--“WindowsApplication1屬性”
在屬性面板里點“資源”,這里可添加字符串資源、圖片資源、多媒體資源等等。
使用資源很簡單,舉例如下:
? Label1.Text = My.Resources.String1
? PictureBox1.Image = My.Resources.小貓
新建---類庫---把你的函數(shù)放在新建的類庫中-----生成ClassLibrary1
在net程序中---引用----對應目錄下的ClassLibrary1.dll
對應的代碼定義如:
Dim
mydll
As
New
ClassLibrary1.Class1
最后就可以用mydll調(diào)用你的函數(shù)MyFunction了:
mydll
.MyFunction(1,
2)
注意:vb.net編寫的DLL不能用
API函數(shù)
的方式通過Declare宣告,只能引用的方式使用
vb.net要編寫的DLL能被vb6.0引用,需要先在編譯屬性中選擇“為COM
互操作
注冊”打勾
然后在Visual
Studio
2008
命令提示中運用RegAsm命令加/tlb命令生成tlb文件
例如:c:\ReleaseRegAsm
ClassLibrary1.dll
/tlb回車就會在當前目錄生成ClassLibrary1.tlb文件
vb6.0中引用ClassLibrary1.tlb即可。
上級目錄不可以,但是為了保證程序路徑改變,引用不會被破壞。可以有幾個方法:
1.將DLL文件放在程序同級目錄
2.將DLL文件放在程序子目錄
3.將DLL文件放在System32目錄下(系統(tǒng)目錄,可以直接引用DLL)
4.可以將DLL文件打包成資源文件,融合到EXE程序中,每次執(zhí)行判斷同級目錄是否有DLL文件,不存在,釋放資源文件。