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