2
이것은 제가 지금까지 가지고있는 것입니다 ... 기본적으로 C++ dll을 사용하여 트리 구성 요소를 채우고 관리되는 csharp로 반환합니다 암호. 나는 문제를 겪고 있으며 하루 종일 아무런 노력없이 노력했다. 내가 성취하고자하는 것은 문자열 배열을 가진 구조체를 C#에서 C++ dll로 전송하여 트리의 모든 구성 요소를 설정 한 다음 C#으로 다시 보냅니다. 여기에 내가 가지고있는 것입니다. 유일한 것은 C++ 코드에 머물러 있어야합니다. 데이터는 TCHAR 배열에서 설정됩니다.문자열 배열 C# dll에 대한 상호 운용성; 문자열 배열을 C#에서 C++로 변환하여 데이터를 설정하고 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# 코드 관리 : C++ unmanged 코드
내 주에
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
도움은 전혀 대단히 감사하겠습니다 . 고마워, 제임스.