説明なし
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

037-DllImportAndroid.cs 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #if UNITY_ANDROID && !UNITY_EDITOR
  2. using System.Runtime.InteropServices;
  3. namespace Burst.Compiler.IL.Tests
  4. {
  5. public class DllImportAndroid
  6. {
  7. public unsafe struct HandleStruct
  8. {
  9. public void* Handle;
  10. }
  11. public struct NestedHandleStruct
  12. {
  13. public HandleStruct Handle;
  14. }
  15. public unsafe struct TypedHandleStruct
  16. {
  17. public byte* Handle;
  18. }
  19. public struct IntInStruct
  20. {
  21. public int Handle;
  22. }
  23. public struct LongInStruct
  24. {
  25. public long Handle;
  26. }
  27. [DllImport("burst-dllimport-native")]
  28. public static extern void allVoid();
  29. [TestCompiler]
  30. public static void AllVoid()
  31. {
  32. allVoid();
  33. }
  34. [DllImport("burst-dllimport-native")]
  35. public static extern int incrementByOne(int x);
  36. [TestCompiler]
  37. public static int UseDllImportedFunction()
  38. {
  39. return incrementByOne(41);
  40. }
  41. [DllImport("burst-dllimport-native")]
  42. public static extern int readFromPtr(ref int x);
  43. [TestCompiler]
  44. public static int ReadFromPtr()
  45. {
  46. int x = 37;
  47. return readFromPtr(ref x);
  48. }
  49. [DllImport("burst-dllimport-native")]
  50. public static extern HandleStruct handleStruct(HandleStruct handle);
  51. [TestCompiler]
  52. public unsafe static long HandleStructByVal()
  53. {
  54. var handle = new HandleStruct { Handle = (void*)0x42 };
  55. return (long)handleStruct(handle).Handle;
  56. }
  57. [DllImport("burst-dllimport-native")]
  58. public static extern NestedHandleStruct nestedHandleStruct(NestedHandleStruct handle);
  59. [TestCompiler]
  60. public unsafe static long NestedHandleStructByVal()
  61. {
  62. var handle = new NestedHandleStruct { Handle = new HandleStruct { Handle = (void*)0x42 } };
  63. return (long)nestedHandleStruct(handle).Handle.Handle;
  64. }
  65. [DllImport("burst-dllimport-native")]
  66. public static extern TypedHandleStruct typedHandleStruct(TypedHandleStruct handle);
  67. [TestCompiler]
  68. public unsafe static long TypedHandleStructByVal()
  69. {
  70. var handle = new TypedHandleStruct { Handle = (byte*)0x42 };
  71. return (long)typedHandleStruct(handle).Handle;
  72. }
  73. [DllImport("burst-dllimport-native")]
  74. public static extern IntInStruct intInStruct(IntInStruct handle);
  75. [TestCompiler]
  76. public unsafe static long IntInStructByVal()
  77. {
  78. var handle = new IntInStruct { Handle = 0x42424242 };
  79. return (long)intInStruct(handle).Handle;
  80. }
  81. [DllImport("burst-dllimport-native")]
  82. public static extern LongInStruct longInStruct(LongInStruct handle);
  83. [TestCompiler]
  84. public unsafe static long LongInStructByVal()
  85. {
  86. var handle = new LongInStruct { Handle = 0x4242424242424242 };
  87. return (long)longInStruct(handle).Handle;
  88. }
  89. }
  90. }
  91. #endif