4 // Tests for net 2.0 pinvoke features
8 using System
.Runtime
.InteropServices
;
12 public static int Main () {
13 return TestDriver
.RunTests (typeof (Tests
));
16 [UnmanagedFunctionPointerAttribute (CallingConvention
.Cdecl
)]
17 public delegate int CdeclDelegate (int i
, int j
);
19 [DllImport ("libtest", EntryPoint
="mono_test_marshal_cdecl_delegate")]
20 public static extern int mono_test_marshal_cdecl_delegate (CdeclDelegate d
);
22 public static int cdecl_delegate (int i
, int j
) {
26 public static int test_0_marshal_cdecl_delegate () {
27 CdeclDelegate d
= new CdeclDelegate (cdecl_delegate
);
29 return mono_test_marshal_cdecl_delegate (d
);
32 [DllImport ("libtest", EntryPoint
="mono_test_marshal_return_fnptr")]
33 public static extern IntPtr
mono_test_marshal_return_fnptr ();
35 delegate int AddDelegate (int i
, int j
);
37 public static int test_4_get_delegate_for_function_pointer () {
38 IntPtr ptr
= mono_test_marshal_return_fnptr ();
40 AddDelegate d
= (AddDelegate
)Marshal
.GetDelegateForFunctionPointer (ptr
, typeof (AddDelegate
));
45 [DllImport ("libtest")]
46 public static extern int mono_return_int (int i
);
48 [DllImport ("libtest", EntryPoint
="not_found")]
49 public static extern int not_found (int i
);
51 public delegate int SimpleDelegate (int i
);
53 [DllImport ("libtest")]
54 public static extern int mono_invoke_simple_delegate (SimpleDelegate d
);
56 public static int test_4_native_function_to_ftnptr () {
57 return mono_invoke_simple_delegate (mono_return_int
);
60 public static int test_0_native_function_to_ftnptr_not_found () {
62 return mono_invoke_simple_delegate (not_found
);
63 } catch (EntryPointNotFoundException
) {