C#(.NET Framework4.5)からCで作成したDLLの関数を呼ぶ

proj4をコンパイルしてproj.dllを作成しC#のEXEから読んだら以下のエラー

PInvoke シグネチャがアンマネージ ターゲット シグネチャに一致していないことが原因として考えられます。呼び出し規約、および PInvoke シグネチャのパラメーターがターゲットのアンマネージ シグネチャに一致していることを確認してください。

呼び出し

[DllImport("proj")]
private static extern IntPtr pj_init_plus(string definition);

[DllImport("proj")]
private static extern void pj_free(IntPtr pj);

//[DllImport("proj")]
//private static extern IntPtr MVlibInit(Int32 PrjType, double lat, double lon, Int32 fkncd);

        static void Main(string[] args)
        {
            IntPtr pj_merc = pj_init_plus("+proj=merc +ellps=clrk66 +lat_ts=33");
            if (pj_merc != IntPtr.Zero)
            {
                pj_free(pj_merc);
            }

        }

.NET Farmerowk 4.0から以下に変更なったらしい

[DllImport("proj", CallingConvention = CallingConvention.Cdecl))]
private static extern IntPtr pj_init_plus(string definition);