Использование DLL, написанной на C++, в C# (указатели)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Есть DLL, написанная на C++, в ней описана такая функция:
int ReadData(int kpn,int bn,OUT DWORD*time,OUT time_struct*btime,OUT DWORD*buf,IN OUT int*num,OUT BYTE*type)
Функция принимает первые два параметра и возвращает результат с помощью указателей в следующие пять. time_struct - это структура следующего вида:
typedef
struct
{
    DWORD   sec;
    WORD msec;
}time_struct;
Я описал ее следующим образом:
 [DllImport("datadrv.dll")]
unsafe public static extern int _ReadData(int kpn, int bn, uint* time, out time_struct* btime, out uint* buf, int* num, out byte* type);
Структуру вот так:
    public struct time_struct
{
    public uint sec;
    public ushort msec;
}
При вызове функции почему-то получаю null Другие функции, в которых нет указателей, работают нормально, а с этой ничего не получается... Находил несколько тем на этом форуме, но не помогло Что сделал неправильно и как исправить? Спасибо!

Решение задачи: «Использование DLL, написанной на C++, в C# (указатели)»

textual
Листинг программы
var buff = new uint[10];
int count = buff.Length;
 
ReadData( ..., buff, ref count, ... );

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.6 из 5
Похожие ответы