2012-07-09 5 views
2

MFC (주로)와 COM을 사용하여 만든이 괴물 C++ 응용 프로그램이 있습니다. 여러 라이브러리에 연결되며 많은 과학적 컴퓨팅을 수행합니다. 이제는 새로운 기능을 추가하고 조직 정책으로 .NET을 사용하여 모든 새로운 기능을 개발하고 있습니다. 따라서이 새로운 UI 기능은 WPF를 사용하여 빌드되고이 기존 C++ 응용 프로그램에서 사용됩니다.InitInstance 전에 충돌하는 C++/CLI MFC 응용 프로그램을 디버깅하는 방법

C++ 응용 프로그램에서 WPF 컨트롤을 사용하는 방법을 알고 있으므로 문제는 아닙니다. 문제는이 프로젝트에서 CLR을 켜려고 할 때 연결을 수행하고 혼합 모드 실행 파일을 생성하기 위해 연결 단계에서 많은 시간 (약 10 분)이 소요된다는 것입니다. 결국, 그렇게하고 성공적으로 실행 파일을 만듭니다. 그러나 문제는이 실행 파일을 실행할 때마다 충돌이 발생한다는 것입니다. 나는 InitInstance를 디버깅하려고 시도 했었지만, 그 전에는 어딘가에 충돌이났다. 나는 다음에 무엇을 시도 해야할지에 대해 다소 혼란 스럽다.

아무도이 문제의 원인이 될 수있는 아이디어가 없습니다.

혼합 모드 어셈블리의 대상 프레임 워크는 4.0이므로 (여기에 설명 된대로) 여기에서 문제가되지 않습니다.

FYI, ILDasm도이 exe를로드하지 못합니다. 많은 시간이 걸리며 오류는 발생하지 않지만로드하지는 않습니다. 이것은 나에게 어떻게 든 관리되는 이미지가 제대로 생성되지 않는다는 인상을줍니다.

+0

작은 샘플 MFC 응용 프로그램에서 먼저 시도하십시오. Debug + Exceptions, Thrown 체크 박스를 사용하십시오. –

+0

C++ 응용 프로그램을 컴파일 할 수 있기 때문에 디버그 모드에서 실행할 때 어떤 종류의 오류나 피드백이 발생합니까? IDE가 충돌합니까? 프로젝트 설정에서 네이티브 또는 관리 또는 두 가지 디버깅을 모두 선택할 수있는 디버그 모드 옵션이 있습니다. 각 조합을 시도해보고 어떤 유형의 정보를 얻을 수 있는지 알아보십시오. 어떤 종류의 충돌입니까? 앱이 단순히 시작되지 않습니까? 처리되지 않은 예외를 나타내는 대화 상자가 나타 납니까? 그렇다면 대화 상자는 무엇을 말하고 있습니까? – Tra5is

답변

0

이것이 필요한지 확실하지 않지만 어느 것이 든 상처를주지는 않습니다. 새로운 MFC 프로젝트는 CWinApp 파생 클래스의 생성자에서이 있습니다.

#ifdef _MANAGED 
    // If the application is built using Common Language Runtime support (/clr): 
    //  1) This additional setting is needed for Restart Manager support to work properly. 
    //  2) In your project, you must add a reference to System.Windows.Forms in order to build. 
    System::Windows::Forms::Application::SetUnhandledExceptionMode(System::Windows::Forms::UnhandledExceptionMode::ThrowException); 
#endif 
관련 문제