.net で使用したい dll があります。dllimport を使用しようとしていますが、エラーが発生します。Windows system32 フォルダーに dll を配置し、exe が保存されている場所にも配置しました。vb で動作するように与えられた関数定義は次のとおりです。
declare function LocalToWGS84 lib "TTDatum3.Dll"(Lat As Double, Lon As Double, ByVal Datum As Long) As Long
メソッド署名
#ifdef __cplusplus
extern "C" {
#endif
int __stdcall WGS84ToLocal(double * lat, double * longt, int d);
c#
class Program
{
[DllImport("TTDatum3.Dll", EntryPoint="LocalToWGS84")]
public static extern long LocalToWGS84([In,Out]double lat, [In,Out]double lon,[In,Out]long datum);
public static void Main(string[] args)
{
Console.WriteLine(LocalToWGS84(50.82011492,-0.117981131, 150));
}
}
エラーは次のとおりです。
未処理の例外: System.AccessViolationException: 保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています