【发布时间】:2011-05-11 04:07:10
【问题描述】:
我有一个使用 C# COM DLL 的 VB6 应用程序。在托管 C++ 中,我可以编写如下函数:
array<String^>^ GetAManagedArray()
{
//Do stuff and return a managed array
}
然后我可以将返回的托管数组分配给 VB6 中的数组:
Sub MySub()
Dim strArray() As String
strArray = myComObject.GetAManagedArray
End Sub
这在 C++ 中运行良好,但在 C# 中 System.Array 对象是抽象的,我似乎无法找到与 C++ array<>^ 等效的托管对象。此外,在 C# 中,仅返回 string[] 不起作用。
什么是 C# 中等效的托管数组?
编辑:这是我的功能的确切代码
C# COM 函数:
public string[] OneTwoThree()
{
return new string[] { "1", "2", "3" };
}
VB6函数:
Private Sub Form_Load()
Dim test As New ComObjectCSharp
Dim strArr(), strTemp As String
strArr = test.OneTwoThree
strTemp = strArr(0) & " " & strArr(1) & " " & strArr(2)
MsgBox strTemp
End Sub
代码在VB6代码的第四行失败,错误“编译错误:无法分配给数组”
【问题讨论】:
标签: c# com vb6 c++-cli marshalling