(a)
[DllImport("libc.so.6", EntryPoint="puts", CharSet=CharSet.Ansi)]
public static extern int puts(string name);

(b)
using System;
using System.Runtime.InteropServices;

class PInvokeTest {

  [DllImport("libncurses.so", EntryPoint="initscr")]
  public extern static void initscr();

  [DllImport("libncurses.so", EntryPoint="getch")]
  public extern static int getch();

  [DllImport("libncurses.so", EntryPoint="mvaddstr")]
  public extern static void mvaddstr(int x, int y, string c);

  [DllImport("libncurses.so", EntryPoint="endwin")]
  public extern static void endwin();

  [DllImport("libncurses.so", EntryPoint="refresh")]
  public extern static void refresh();

  public static void Main() {
    initscr(); // Initialize ncurses
    mvaddstr(11, 24, "Hello, from ncurses!");
    mvaddstr(12, 20, "(press any key to continue)");
    refresh();
    getch();  // Wait for keypress
    endwin(); // clean up
  }
}

Example 3: Using P/Invoke.

Back to Article