0
こんにちは、GetArray()メソッドでMyClass型のオブジェクトのリストを返すC#プロジェクトがあります。 私はこのDLLをregasm ClassLibrary1.dll/codebase/tlbに登録して、次にVB6のプロジェクトでClassLibrary1.tlb参照を下のコードとして追加します。 私は、MicrosoftのVisual Studio 6.0内部VB6アプリケーションを実行すると、それは動作しますが、私は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
ランタイムエラーが何かを投稿した場合に役立ちます。 –
また、IDEではなくEXE自体でテストすることもできます。いくつかまたは他の理由で、IDEでVB6アプリケーションを動作させることはできませんが、EXEは正常に動作します。 – jakdep