2012-05-13 3 views
0

혼합 DLL (C++/CLI)을 생성하고 일반 ANSI C 응용 프로그램에서 성공적으로 호출 한 후에는 동일한 C++ COM 서버에서 호출합니다 C 진입 점). 그러나 COM 서버가 성공적으로 시작되거나 DLL을 호출하기 전에도 ntdll.dll에서 "액세스 위반"이 발생합니다. 호출 스택에는 ntdll.dll이 있습니다! ExecuteHandler2는 VS 디버그 출력에서 ​​스택 오버 플로우가보고되는 지점까지 여러 번 반복됩니다. 내 혼합 모드 DLL 및 mscoree.dll로드 된 볼 수 있습니다.혼합 모드 DLL은 지연 로딩이 필요합니다.

COM 서버의 지연된 DLL 옵션에 혼합 DLL을 추가했는데 제대로 작동하는 것 같습니다.

내가 쓴 C 응용 프로그램이 지연로드없이 정상적으로 작동하는 것처럼 보일 때 왜 혼합 DLL을 C++ COM 서버에로드해야합니까? 이 문제를 디버깅하려면 어떻게해야합니까? (예상하지 못했지만 아무 것도 찾을 수 없습니다.)

+0

DllMain이 실행될 때 LoaderLock과 같은 소리가 CLR을로드 할 수 없습니다. Debug + Exceptions, Thrown 확인란을 사용하여 예외가 발생하면 예외를 트랩합니다. –

답변

0

COM Appartment은 초기화해야합니다. COM appartments는 스레드 동기화를 관리하는 데 사용됩니다.

관련 문제