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);