Я просто хочу вызвать функцию C из DLL в C #. Эта функция C возвращает структуру.
Вот объявление .h-файла c dll:
typedef struct t_Point{
int x;
int y;
} Point;
Point myFuncs();
Теперь я хочу использовать эту функцию в C #. Wrapper.cs:
using System.Text;
using System.Runtime.InteropServices;
namespace CSharp_mit_OpenCV
{
[StructLayout(LayoutKind.Sequential)]
public struct Point
{
public int x;
public int y;
};
class Wrapper
{
[DllImport("OpenCV Test.dll", CharSet= CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Struct)]
public static extern Point myFuncs();
}
}
Использование выглядит следующим образом:
Point p = Wrapper.myFuncs();
(наименование, вероятно, не самое лучшее)
myFuncs только объявляет структуру, помещает некоторые значения в x и y и возвращает ее. Проблема: значения, которые я получаю в C #, отличаются от значений, сгенерированных в функции C. Это должно быть 4 и 2, и это 0 и 111226272. В чем здесь проблема?
Спасибо за любую помощь!