2010-04-16 2 views
1

DllImport()를 통해 네이티브 32 비트 DLL 을 사용하는 32 비트 .net 응용 프로그램이 있습니다. 네이티브 DLL은 우리의 내부 파일 분석 라이브러리입니다. 사람들이 그것을 업데이트하면 (다른 소프트웨어가 사용하는) C#으로 이식하는 것이 문제가 될 수 있습니다.네이티브 dll을로드 할 때 ExecutionEngineException이 throw됩니다.

문제는 네이티브 DLL에서 어떤 메서드를 실행하려고 할 때 System.ExecutionEngineException이 발생합니다. 사실, 관리되는 응용 프로그램을 네이티브 메서드를 호출하는 간단한 테스터로 축소했지만 여전히 실패합니다.

필자는 64 비트 Windows 7을 사용하고 있지만 모든 것을 32 비트 바이너리로 컴파일하므로 중요하지 않습니다.

또한 흥미로운 점은 Dependency Walker에서 네이티브 DLL을 보면 msvcr90.dll을 찾을 수 없다는 것을 보여줍니다. 그러나 Dependency Walker에서 다른 네이티브 DLL을 열면 그들의 참조 msvcr90.dll 잘 찾으십시오. DLL 레퍼런스를 엉망으로 만드는 네이티브 DLL의 컴파일에 약간의 잘못이있을 수 있습니까?

답변

1

정상 - 문제는 다소 안개가 듭니다. 분명히 동료가 기본 DLL의 메서드를 수정하여 (C++에서 잘 처리하는) 하나의 매개 변수를 포함하지만, 우리가 알고 있듯이 C# 3.5는이 아닙니다. 해당 매개 변수에 값을 제공하면 모든 것이 정상적으로 작동합니다!

관련 문제