Jak wywołać metodę linuxową (clock_gettime) w C#

0

o ile udało mi się pod linuxem podłaczyć się do "dllki" (czyli pliku so) i wywołać metodę bezargumentową to jak wywował metode z argumentami jak
clock_gettime

dzięi za pomoc

1

Ja uzywalem w magisterce linuxowych natywnych komend nie wiele moge ci pomoc ale poakze przykladowy kod:


        [DllImport("libc.so.6", EntryPoint = "open")]
        public static extern int Open(string fileName, int mode);

        [DllImport("libc.so.6", EntryPoint = "ioctl", SetLastError = true)]
        private extern static int Ioctl(int fd, int request, int data);

        [DllImport("libc.so.6", EntryPoint = "read", SetLastError = true)]
        internal static extern int Read(int handle, byte[] data, int length);

        [DllImport("libc.so.6", EntryPoint = "pread", SetLastError = true)]
        internal static extern int Read(int handle, byte[] data, int length, int offset);

tak to mialem zaimplementowane wewnatrz klasy w ktorej zuywalem nastepnie wolalem normlanie metode np Read() i podwalem argumenty w niej jakby byla zwykla metoda w c# :)

0

Musisz zmapować typy na odpowiednie struktury. Możesz wczytywać się w dokumentację, możesz też zerknąć na jakieś przykłady z https://pinvoke.net/ i odpowiednio zrobić kopiuj-wklej-dostosuj.

0

@Antyktokolwiek
kod jak kod, szału nie ma


    public static class NativeMethods
    {
        [DllImport ("libc.so.6")]
        public static extern int clock_gettime(CLOCK_MONOTONIC, &t);

    }

chodzi mi jak przekazać argumenty do metody
gdy wywołuję metodę bezparametrową jest git

w cpp tez jest git :)

ale jak to zrobić w C#?
jak zmapować - na pewno ostatni argument można by zrobić out var - ale co, jak to jest jakaś struktura
CLOCK_MONOTONIC - tez muszę to jakoś przekazać, ale jak

nie mam pojecia jak się w takich przypadkach mapuje struktury z cpp na c#

1 użytkowników online, w tym zalogowanych: 0, gości: 1