--- /dev/null
+using System;
+using System.Runtime.InteropServices;
+
+public class Test
+{
+ [DllImport ("libtest.so", EntryPoint="mono_test_byvalstr_gen")]
+ public static extern IntPtr mono_test_byvalstr_gen();
+
+ [DllImport ("libtest.so", EntryPoint="mono_test_byvalstr_check")]
+ public static extern int mono_test_byvalstr_check(IntPtr data, string correctString);
+
+ [StructLayout (LayoutKind.Sequential)]
+ public struct ByValStrStruct
+ {
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst=100)]
+ public string a;
+ }
+
+ public unsafe static int Main ()
+ {
+ string testString = "A small string";
+
+ IntPtr udata = mono_test_byvalstr_gen();
+
+ ByValStrStruct data = new ByValStrStruct();
+ data.a = testString;
+
+ Marshal.StructureToPtr(data, udata, false);
+
+ return mono_test_byvalstr_check(udata, testString);
+ }
+}
+