字符串数组C#与C ++ dll的互操作性;从C#到C ++ dll的字符串数组,它设置数据并将其发送回c#

|| 这是我到目前为止所拥有的...基本上,我使用c ++ dll填充树组件并将其设置,然后将其返回给托管的csharp代码。我遇到了问题,尝试了一整天都没有成功。我要完成的就是将带有字符串数组的结构从c#发送到c ++ dll,在其中它设置树的所有组件,然后将其发送回c#。这就是我得到的..唯一需要保留的是在C ++代码中,是从TCHAR数组设置数据。 C ++非管理代码:
 struct GetTreeStruct
 {    
     char** components;
 };

extern \"C\" __declspec(dllexport) void __stdcall GetTree(GetTreeStruct* myStruct);

void __stdcall GetTree(GetTreeStruct* myStruct)
{

    myStruct->components = new char *[sNumberReturned]; //sNumberReturned = some # 

    for(i = 0;i<sNumberReturned;i++)
    {
       myStruct->components[i] = (char*)(arrayItem[i]); //arrayItem is TCHAR array
    }

}
C#托管代码:
public struct GetTreeStruct
{
    [MarshalAs(UnmanagedType.LPArray)]
    public string[] treeComponents;
}

[DllImport(@\"C:\\Users\\James\\Desktop\\ShaggyDLL\\Release\\ShaggyDLL.dll\")]
public static extern void GetTree(ref GetTreeStruct theStruct);
在我的主..
//getTree
getTreeStruct.treeComponents = null;

Console.WriteLine(\"Get Tree:\");
NativeMethods.GetTree(ref getTreeStruct);

list<string> list = getTreeStruct.treeComponents.ToList();

//print list
//... you know the code
任何帮助将不胜感激。谢谢,詹姆斯。     
已邀请:
您不需要为C#传递16位字符来获取它吗? (双关语意)     

要回复问题请先登录注册