轉自:http://www.taotechinfo.com/collect/2010222/n68565463.html .NET中如何調用VB6編寫的DLL。
本文以C#為例,自己實踐了一下。希望對遇到相關問題的人有所協助。
本樣本分成兩部分,第一,產生vb的dll。第二,在C#中進行調用。
第一部分:
1.首先在VB中選擇ACTIVX DLL工程類型。
2.然後修改工程名,class檔案名稱,添加2個函數,如:
方便copy,代碼如下:
Public Function FncTestDLLForDotNet(instr As String) As Integer
FncTestDLLForDotNet = 9
End Function
Public Function FncTestDLLForDotNet2(instr As String) As Integer
FncTestDLLForDotNet2 = 99
End Function
3.然後從檔案菜單中選擇產生TestDLLProject1.dll,即可產生DLL。
下面為第二部分:
1.開啟vs2005,選用語言c#,工程類型為一個window application即可。
在form上添加一個按鈕。如:
我加的: 把TestDLLProject1.dll拷貝到System32檔案夾下
2.在方案總管中,右鍵點引用,在彈出的對話方塊中選擇瀏覽,找到System32裡的TestDLLProject1.dll,選中它,點確定。即可加入到引用中。如:
添加完後,會看到在引用中已經增加了對這個dll的引用,
3,最後一步了編寫按鈕的代碼,來調用這個vb的dll中的方法。
雙擊form上的button,在button的click事件中加入如下代碼:
TestDLLProject1.TestClass1 tc = new TestDLLProject1.TestClass1();
string ss = "kkkk";
int i = tc.FncTestDLLForDotNet(ref ss);
int i2 = tc.FncTestDLLForDotNet2(ref ss);
MessageBox.Show(i.ToString() + " " + i2.ToString());
好,按ctrl+shift+b,編譯工程,再按f5運行,點擊按鈕,如,成功彈出結果。
如果要移植到其他電腦上,需要把TestDLLProject1.dll複製到該機的System32檔案夾下,並在“運行”中使用regsvr32 TestDLLProject1.dll這條命令來註冊該組件(可能有的組件不需要註冊吧),才能成功移植到其他電腦。否則會報錯“檢索COM類工廠中CLSID為{ 一串字元 } 的組件時失敗,原因是出現以下錯誤:80040154”