2

私のCコードは

void GetCharArray(char* arrayNew[5])
{
    arrayNew[0] = "Test";
    arrayNew[1] = "Test2";
    arrayNew[2] = "Test4";
    arrayNew[3] = "Test5";
    arrayNew[4] = "Test6";
}

extern "C" __declspec(dllexport) void GetCharArray(char* arrayNew[5]);

C# コードで文字列が取り込まれた配列を取得したい

[DllImport(@"C:/Test.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern void GetCharArray([MarshalAs(UnmanagedType.LPArray, SizeConst=5)] string[] sbOut);

List<string> testStr = new List<string>();
GetCharArray(test.ToArray());

testStrC コードからの文字列を入力したいです。

4

3 に答える 3

1

解決策を見つけた

public static extern void GetCharArray(IntPtr[] results);

IntPtr[] pointers = new IntPtr[1000];
GetCharArray(pointers);
string[] results = new string[1000];
for (int i = 0; i < 1000; i++)
{
    results[i] = Marshal.PtrToStringAnsi(pointers[i]);
}

それが他の誰かに役立つことを願っています。

于 2012-07-19T06:54:29.777 に答える
-3

構文の正確さについて説明せずに、次のリンクがさらに役立つと思います。

http://www.dotnetperls.com/convert-char-array-string

于 2012-07-19T06:45:52.693 に答える