using System; using System.Runtime.InteropServices; struct datum { IntPtr dptr; int dsize; } public class DatabaseTest { [DllImport ("libgdbm.so.2")] private static extern IntPtr gdbm_open (string path, int blockSize, int flags, int mode, IntPtr cb); [DllImport ("libgdbm.so.2")] private static extern void gdbm_close (IntPtr db); [DllImport ("libgdbm.so.2")] private static extern datum gdbm_firstkey (IntPtr db); [DllImport ("libgdbm.so.2")] private static extern datum gdbm_nextkey (IntPtr db, IntPtr datum); public static void Main () { IntPtr db = gdbm_open ("songs.db", 4096, 0 /* GDBM_READER */, 0, IntPtr.Zero); Console.WriteLine ("db={0}", db); if (db != IntPtr.Zero) { gdbm_firstkey (db); } } }