我們先做了測試:(VB)
1、先選擇"檔"--> -->"新建"-->"專案"
添加1個表單一個bas檔
from1.frm 添加一個button
Private Sub Command1_Click()
Dim ArgList() As ComDll.ComTempStruct
Call getVbFun4(ArgList())
Erase ArgList
End Sub
Module1.bas
Public Function getVbFun4(ByRef oo2() As ComDll.ComTempStruct) As Long
Dim ooObj As New ComDll.ComClass
Dim oo1 As ComDll.ComTempStruct
Const N_MAX = 10000
Dim nlen As Long
nlen = N_MAX
ReDim oo2(nlen)
oo1.v1 = 1000
bb = ooObj.vbFun4(oo2, nlen)
MsgBox Format(bb)
End Function
VS2008端創建一個轉換類
2.ComClass.cs
public int vbFun4(ref ComTempStruct[] f,int n)
{
return n;
}
3、編譯此專案前,先設置"專案"-->"屬性"-->"生成"下的"為COM Interop 註冊"打上勾,
4.原有AssemblyInfo.cs檔中的"[assembly: ComVisible(false)]"修改為"[assembly: ComVisible(true)]"保存,編譯即可
COM Interop 註冊挑中的情況下編譯Com.dll就加入到了windows的dll庫中。
這個時候在vb6端的引用中直接引用這個dll了
以上是測試代碼,僅考慮了是否正確調用函數,假使想讓VB調用.net DLL時顯示提示該類中的方法等,需要在DLL編寫時添加額外的代碼。
全站熱搜
留言列表