Mik*_*ebb 2 c# vb6 com c++-cli marshalling
我有一个使用C#COM DLL的VB6应用程序.在托管C++中,我可以编写如下函数:
array<String^>^ GetAManagedArray()
{
//Do stuff and return a managed array
}
Run Code Online (Sandbox Code Playgroud)
然后我可以将返回的托管数组分配给VB6中的数组:
Sub MySub()
Dim strArray() As String
strArray = myComObject.GetAManagedArray
End Sub
Run Code Online (Sandbox Code Playgroud)
这在C++中工作正常,但在C#中,System.Array
对象是抽象的,我似乎无法找到与C++相当的托管array<>^
.另外,在C#中只是返回string[]
不起作用.
C#中托管数组的等价物是什么?
编辑:这是我对功能的确切代码
C#COM功能:
public string[] OneTwoThree()
{
return new string[] { "1", "2", "3" };
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
代码在VB6代码的第四行失败,错误为"编译错误:无法分配给数组"
strArr()变量实际上不是字符串数组.这是一系列变种.固定:
Dim strArr() As String
strArr = test.OneTwoThree
Run Code Online (Sandbox Code Playgroud)
现在它与您的第一个代码段相同.
归档时间: |
|
查看次数: |
2665 次 |
最近记录: |