Интервал DLLImport ** - Как сделать это, если он может быть сделан

Я не знаю PHP. Но я знаю, что этот запрос MySql даст ваш результат:

ВЫБЕРИТЕ TABLE_NAME из information_schema.TABLES, где TABLE_SCHEMA = 'puzzleGame' и TABLE_TYPE = 'base table' и TABLE_NAME как 'Puzzle%';

5
задан Robin Robinson 16 October 2008 в 16:50
поделиться

3 ответа

Используйте - касательно System.IntPtr.

 [DllImport("thirdparty.dll")]
 static extern long ThirdPartyFunction(ref IntPtr arg);

 long f(int[] array)
  { long retval = 0;
    int  size   = Marshal.SizeOf(typeof(int));
    var  ptr    = IntPtr.Zero;

    try 
     { ptr = Marshal.AllocHGlobal(size * array.Length);

       for (int i= 0; i < array.Length; ++i) 
        { IntPtr tmpPtr = new IntPtr(ptr.ToInt64() + (i * size));
          Marshal.StructureToPtr(array, tmpPtr, false);
        }

       retval = ThirdPartyFunction(ref ptr);
     }
    finally 
     { if (ptr != IntPtr.Zero) Marshal.FreeHGlobal(ptr);
     }

    return retval;
  }
7
ответ дан 14 December 2019 в 04:51
поделиться

Необходимо будет использовать класс Маршала или пойти небезопасные в этом случае.

Это мог также просто быть указатель на массив, таким образом, a ref int[] list мог бы работать.

1
ответ дан 14 December 2019 в 04:51
поделиться

Интервал ** был бы и массив IntPtr из Вашего описания, я думаю, что Вы могли бы хотеть изучить использование C++ / CLI для помощи Вам с преобразованиями, например, от неуправляемого интервала ** к управляемому array^>^

0
ответ дан 14 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: