C# 콘솔 응용 프로그램에서 Fortran DLL에 저장된 서브 루틴을 호출 할 때 다음 오류가 계속 발생합니다. "처리되지 않은 'System.EntryPointNotFoundException'형식의 예외가 이름에 발생했습니다. exe 추가 정보 : 'Fortran.dll'에서 'Fortran_Subroutine'이라는 항목을 찾을 수 없습니다. "이 오류 메시지와 관련된 거의 모든 게시물은 C#/C++와 관련이 있습니다. Fortran 프로젝트에는 DLL을 C# 프로젝트 (CSharp_proj \ bin \ debug)로 복사하는 빌드 후 이벤트가 있습니다.C#/Fortran : 진입 점을 찾을 수 없습니다.
포트란 코드에 두 통화를 사용! 감속 $을 수행 그들은? OK 보면
C
MODULE MF_DLL
C
CONTAINS
C
SUBROUTINE MFNWT_INIT()
C
!DEC$ ATTRIBUTES DLLEXPORT :: MFNWT_INIT
!DEC$ ATTRIBUTES DECORATE, ALIAS: "MFNWT_INIT"
C
USE GLOBAL
...(do stuff)
RETURN
END SUBROUTINE MFNWT_INIT
포트란을 호출하는 C# 코드, 않는 같이 DllImport 호출 모습 OK?
using System.Runtime.InteropServices;
public static class CustomMODSIM
{
public static Model myModel = new Model();
private static SortedList myStreamNodes;
public static void Main(string[] CmdArgs)
{
string FileName = CmdArgs[0];
myModel.Init += OnInitialize;
...(do more stuff)...
//Function call that will invoke "OnInitialize" below
myProgram.RunSolver(myModel);
}
private static void OnInitialize()
{
//call Fortran function
MFNWT_INIT();
//Initialize list of stream nodes
myStreamNodes = new SortedList();
Node m_Node = myModel.FindNode("NonStorage1");
...(do more stuff)
}
//Fortran DLL interface
[DllImport("MF_DLL.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern void MFNWT_INIT();
}
* " 'Fortran.dll'에서 'Fortran_Subroutine'이라는 엔트리 포인트를 찾을 수 없습니다. 분명히 " 'MFNWT_INIT'... '라는 엔트리 포인트를 찾을 수 없습니까? –
필자는 예제 메시지에서 일반적인 이름을 사용했을 정도로 다양한 조합을 시도해 왔습니다. 내가 지적한 것처럼 특정 코드에 대한 오류 메시지는 "DLL MF_DLL.dll에서 'MFNWT_INIT'라는 항목 포인트를 찾을 수 없습니다" – user2256085
'dumpbin의 결과를 게시 할 수 있다면 도움이 될 것입니다/export MF_DLL.dll'. – user7116