Мне дали работающую программу на Фортране, и я должен написать для нее C # GUI (не спрашивайте, почему). Эта программа уже имеет графический интерфейс FORTRAN, поэтому я извлек все вычислительные подпрограммы и поместил его в FORTRAN dll. Эта dll состоит из 4 файлов: одной статической библиотеки, одного файла FORTRAN77 (.for) и двух файлов FORTRAN90 (.f90). Я поместил все подпрограммы, которые должны вызываться из кода C #, в EXPORT.f90.
ФОРТРАН КОД:
MODULE MYVAR
REAL*8 LK
COMMON LK
END MODULE
SUBROUTINE SETLK(NEWLK)
!DEC$ ATTRIBUTES DLLEXPORT :: SETLK
USE MYVAR
REAL*8 NEWLK
LK = NEWLK
END
SUBROUTINE GETLK(LKOUT)
!DEC$ ATTRIBUTES DLLEXPORT :: GETLK
USE MYVAR
REAL*8, INTENT(OUT):: LKOUT
LKOUT = LK
END
Теперь я пытаюсь вызвать их на C #
[DllImport(@"MYDLL.dll", CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.Cdecl,
EntryPoint="SETLK")]
public static extern void SETLK(ref double NEWLK);
[DllImport(@"MYDLL.dll", CharSet = CharSet.Ansi,
CallingConvention = CallingConvention.Cdecl,
EntryPoint="GETLK")]
public static extern void GETLK(out double LKOUT);
static void Main(string[] args)
{
double d1 = 1.234;
SETLK(ref d1);
double d2;
GETLK(out d2);
Console.WriteLine(d2.ToString());
}
Я получаю EntryPointNotFoundException «Не удалось найти точку входа« SETLK »в« MYDLL.dll »». Что мне нужно сделать, чтобы это работало?
Thanx