.NET 응용 프로그램에서 관리되지 않는 dll을 사용하고 예외가 발생하는 중 문제가 발생했습니다 "런타임에 치명적인 오류가 발생했습니다. 오류 주소는 0xbb4의 0x79e71bd7에있었습니다. 코드는 0xc0000005입니다.이 오류는 CLR 또는 사용자 코드의 안전하지 않거나 확인할 수없는 부분의 버그 일 수 있습니다.이 버그의 일반적인 출처에는 스택을 손상시킬 수있는 COM-interop 또는 PInvoke의 사용자 마샬링 오류가 포함됩니다. " 내 코드는 아래와 같다FatalExecutionEngineError가 감지되었습니다
....
[DllImport("ITMSDLL.dll")]
internal static extern int get_month_mask(ref String theMask,ref String theByt, int theSt_Dow, int theSt_Week, int theEn_Dow, int theEn_Week);
및
public int GetMonthMask(ref String theMask,ref String theByt, int theSt_Dow, int
theSt_Week, int theEn_Dow, int theEn_Week)
{
return CITMSDLLMethods.get_month_mask(ref theMask, ref theByt, theSt_Dow,
theSt_Week, theEn_Dow, theEn_Week);
}
두 가지 방법이 위 C에서 # 방법에 따라이 방법 callng 닷넷 제 래퍼 DLL에서이다.
및 상기 방법은 예외를 발생이 방법 "FatalExecutionEngineError 검출 된"상단에 지정된 예외 메시지를 호출 할 때 코드를
aRc = Utility.objCITMSDLL.GetMonthMask(ref aRetMask,ref aMByte, aSt_Dow, aSt_Wk, aEn_Dow, aEn_Wk);
따라 호출된다.
안녕하세요, 답변 해 주셔서 감사합니다. String bulder를 사용하여 시도했지만 도움이되지 않았으며 동일한 오류가 발생했습니다. – user603153
메서드의 C 정의를 게시해야합니다. 이 방법을 사용하면 여기있는 사람들이 모양을 가지고 다른 매핑을 제안 할 수 있습니다. – Timores
사실 나는 메서드의 정의가 없으며 .dll 파일 만 있습니다. 이 dll은 oracle .fmb 응용 프로그램에서 이전에 사용되었습니다. 다음은 oracle .fmb 파일에서 사용되는 정의입니다. – user603153