MFC41 "xsd.exe"이(가) 종료되었습니다(코드: 1) 해결 방법 MSVS 2026 환경에서 MFC DLL 빌드 중 xsd.exe(코드: 1) 에러가 발생하는 가장 핵심적인 원인은 Visual Studio 2017 버전부터 C++ 프로젝트에 대한 xsd.exe 지원(CodeProvider 기반의 C++ 헤더 생성 기능)이 공식적으로 중단(Deprecated) 및 제거되었기 때문입니다. [1]이전 구형 VS 버전에서 작성된 MFC 프로젝트가 빌드 이벤트나 사용자 지정 빌드 단계(Custom Build Step)를 통해 XML 스키마(.xsd) 파일로부터 C++ 소스 코드를 자동 생성하도록 설정되어 있다면, 최신 컴파일러 환경인 VS 2026에서는 이를 정상적으로 처리하지 못하고 런타임 오류(종료 코드 1)를 발생시킵니다. 구체적인 발생 원인과 해결 방법은 다음과 같습니다.. 2026. 5. 22. Visual Studio 2022 이후 버전에서 .props 파일 대체 방법 이전 버전(VS2010~VS2015 등)에서 사용하시던 AppData\Local\Microsoft\MSBuild\v4.0 폴더의 global .props 방식(Microsoft.Cpp..user.props)은 Visual Studio 2022 및 2026(MSVS2026)을 포함한 최신 버전에서는 성능 및 빌드 안정성 문제로 인해 공식적으로 폐지되거나 더 이상 권장되지 않습니다.대신 최신 Visual Studio 환경에서 공용 Include 및 Library 폴더를 편하게 지정할 수 있는 훨씬 깔끔하고 강력한 두 가지 대체 방법이 있습니다.상황에 맞춰 아래 방법 중 하나를 선택해 적용해 보세요.솔루션/프로젝트 단위 자동 적용 (Directory.Build.props) 작업하시는 소스코드 폴더 구조 상위에.. 2026. 5. 20. MFC 예외 객체(CException)가 해제되지 않아 메모리 누수가 발생 MFC의 예외 처리(CException)는 일반 C++ 예외와는 조금 다른 관리 방식이 있어서 헷갈리기 쉽습니다. 핵심은 MFC의 예외 객체는 보통 힙에서 생성되고, 반드시 Delete()로 해제해야 한다는 점입니다. 상황 분석try { } catch (...) { } 여기서 catch (...)는 모든 예외 타입을 잡습니다. 하지만 구체적인 타입(CException*)을 지정하지 않았기 때문에, 예외 객체에 접근할 수 없습니다.MFC에서 CException은 보통 new로 생성된 후 던져집니다. 따라서 catch (CException* e)로 받아서 e->Delete()를 호출해야 메모리 누수가 발생하지 않습니다.catch (...)만 쓰면 CException* 포인터를 받을 수 없으므로, Delete.. 2025. 12. 23. MSXML에서 createElement를 사용할 때 자동으로 xmlns="" 속성이 붙는 이유와 막는 방 MSXML에서 createElement를 사용할 때 자동으로 xmlns="" 속성이 붙는 이유는 네임스페이스를 지정하지 않고 요소를 생성했기 때문입니다. 이를 막으려면 createElement 대신 createNode를 사용하여 네임스페이스를 명시적으로 지정하거나, createElement 호출 시 올바른 네임스페이스를 함께 전달해야 합니다. https://learn.microsoft.com/en-us/answers/questions/857792/how-to-remove-the-xmlns-attribute-that-gets-added how to remove the xmlns attribute that gets added by the xmldocument - Microsoft Q&AHi experts ,.. 2025. 12. 19. BluetoothFindFirstDevice Example https://learn.microsoft.com/ko-kr/windows/win32/api/bluetoothapis/nf-bluetoothapis-bluetoothfindfirstdevice BluetoothFindFirstDevice 함수(bluetoothapis.h) - Win32 appsBluetoothFindFirstDevice 함수는 Bluetooth 디바이스 열거를 시작합니다.learn.microsoft.comBluetoothFindFirstDevice 함수는 Bluetooth 디바이스 열거를 시작합니다.HBLUETOOTH_DEVICE_FIND BluetoothFindFirstDevice( const BLUETOOTH_DEVICE_SEARCH_PARAMS *pbtsp, BLUETO.. 2024. 10. 21. CFileDialog의 Title 이름 변경하는 방법 https://learn.microsoft.com/ko-kr/cpp/mfc/reference/cfiledialog-class?view=msvc-170 CFileDialog 클래스 자세한 정보: CFileDialog 클래스 learn.microsoft.com CFileDialog 클래스에 m_ofn 구조체가 존재한다. CFileDialog::m_ofn Windows OPENFILENAME 구조체입니다. 기본 파일 대화 상자 매개 변수에 대한 액세스를 제공합니다. 아래와 같이 구조체의 lpstrTitle 변수에 이름을 넣으면 Title이 변경이 된다. CString name_filter = _T("Txt Files(*.txt) | *.txt; ||"); CFileDialog dlg(TRUE, NULL, NU.. 2024. 1. 16. MFC 단축키 Accelerator 리소스 추가 https://learn.microsoft.com/ko-kr/windows/win32/learnwin32/accelerator-tables 액셀러레이터 키 테이블 - Win32 apps 액셀러레이터 키 테이블 learn.microsoft.com MFC 프로젝트에 Accelerator 리소스를 아래 이름으로 추가합니다. IDR_ACCEL1 리소스 편집기에서 관련 단축키를 지정합니다. ID_FILE_OPEN, ID_FILE_SAVE 등은 기본적으로 생성이 되는데 Main Menu, Toolbar에 관련 ID가 등록되어 있으면 아래와 같이 Accelerator를 등록하지 않아도 작동이 되는 것 같습니다. 그러나 사용자가 추가한 ID는 아래와 같이 등록을 하지 않으면 작동이 되지 않는 것을 확인 했습니다. 헤더.. 2024. 1. 16. 최근 열어본 파일 MRU Menu Items 처리 커스텀 방법 MFC의 Main Menu에 "최근 열어본 파일" 리스트를 표시하고 그 리스트를 선택 했을 때 Doc의 OnOpenDocument(LPCTSTR lpszPathName) 함수가 호출된다. MFC 프레임워크에서 처리를 하기 때문에 OnOpenDocument(LPCTSTR lpszPathName) 함수 전에 CDocTemplate을 선택 한다거나 다른 작업을 하려면 아래와 같은 방식으로 처리를 하면 된다. 내가 이 작업을 하게 된 이유는 프로그램 내부 버전 별로 CDocTemplate을 어려게 사용을 하는데 자동을 OnOpenDocument(LPCTSTR lpszPathName) 함수가 호출되니 원하는 CDocTemplate으로 표시가 되지 않는 문제가 있었다. 참고로 CDocTemplate을 선택하는 방법.. 2024. 1. 15. UpdateData() 함수 Param 의미 MFC에서 UpdateData()를 사용해서 Control의 값을 변수로 적용하거나 반대로 처리한다. void etModalProgressThread::UpdateData(BOOL b) { etModalProgressDlg * pDlg = (etModalProgressDlg *)m_pMainWnd; pDlg->m_title = m_title; pDlg->m_Text = m_Text; pDlg->SendMessage(UM_MODAL_UPDATEDATA, (WPARAM)b, 0L); } https://learn.microsoft.com/en-us/cpp/mfc/dialog-data-exchange?view=msvc-170 Dialog Data Exchange Learn more about: Dialog Da.. 2023. 7. 7. 이전 1 2 3 4 5 다음