我們先做了測試:(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編寫時添加額外的代碼。
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()