Код: Выделить всё
// C# code
public struct TestStruct {
public uint id;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)]
public char[] name;
};
[DllImport("Test.dll", CallingConvention = CallingConvention.StdCall)]
internal static extern void testFunction(ref TestStruct ts);
string name = "name123"; // 7 chars
TestStruct ts = new TestStruct();
ts.name = name.ToCharArray();
testFunction(ref tcsymbol); // C dll function call
Мне также пришлось жестко закодировать SizeConst = 7, чтобы этот тест работал... но во время выполнения я не буду знать размер значения имени, поэтому это решение в любом случае не будет работать как есть.
Любая помощь будет быть оцененным...
Подробнее здесь: https://stackoverflow.com/questions/792 ... truct-to-c
Мобильная версия