testcase.cs: using System; using System.Runtime.InteropServices; public class test{ static void Main(){ double a = 3.5; float b = 0.2f; int c = 1; Console.WriteLine("C#:"); Console.WriteLine("Double: "+a); Console.WriteLine("Float: "+b); Console.WriteLine("Int: "+c); print_values_c(a,b,c); } //pinvoke signature [DllImport("testcase.so")] static extern void print_values_c (double a, float b,int c); } testcase.c: #include void print_values_c (double a, float b, int c){ printf("C:\n"); printf("Double: %g\n",a); printf("Float: %g\n",b); printf("Int: %d\n",c); } output: C#: Double: 3,5 Float: 0,2 Int: 1 C: Double: 3,5 Float: 0,2 Int: 1