0
嗨在C#中有一個項目,它返回一個MyClass類型的對象與GetArray()方法的列表。 我用regasm ClassLibrary1.dll/codebase/tlb註冊這個dll,然後在VB6的項目中添加ClassLibrary1.tlb引用,如下面的代碼。 當我運行Microsoft Visual Studio 6.0中它的工作原理,但是當我試圖運行VB6的EXE我有一個運行時錯誤從C#到VB6傳遞類對象的數組
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace ClassLibrary1
{
[ClassInterface(ClassInterfaceType.AutoDual)]
[Guid("D878834C-306E-4260-905F-BDEBDF14CBDA")]
[ComVisible(true)]
public class MyProjectC
{
public MyClass[] GetArray()
{
var list = new List<MyClass>
{
new MyClass {Nome = "A"},
new MyClass {Nome = "AB"},
new MyClass {Nome = "AC2"},
new MyClass {Nome = "D"}
};
return list.ToArray();
}
}
[ClassInterface(ClassInterfaceType.AutoDual)]
[Guid("D878834C-306E-4260-905F-BDEBDF14C111")]
[ComVisible(true)]
public class MyClass
{
public string Nome;
}
}
Private Sub Form_Load()
On Error GoTo error
Dim str As String
Dim oBookMark As Variant
Dim theProjectC As New ClassLibrary1.MyProjectC
For Each oBookMark In theProjectC.GetArray
str = oBookMark.Nome
MsgBox str
Next
Exit Sub
error:
MsgBox "Errore" & Err.Description
End Sub
如果您發佈了運行時錯誤,這將有所幫助。 – 2010-12-19 10:11:27
您也可以在EXE本身而不是IDE中對其進行測試。出於某種原因,我們無法讓VB6應用程序在IDE中工作,但EXE正常工作。 – jakdep 2010-12-20 11:08:50