VisualStudio.C++.C# ( 315 ) AppLife Update . VS2015 C# 프로젝트 VS2022 로 마이그레이션 AppLife Update . VS2015 에서 VS2022 로 마이그레이션 상황 VS 2015 에서 AppLife Update ( version 4.0 ) 적용한 C# 프로젝트를 VS2022 로 마이그레이션 하기. VS 2015 로 작성된 C# 프로젝트를 VS2022 에서 읽어들이는건 문제없이 진행되나, 프로젝트에 적용한 .net framework 버전 관련으로 수정해야 할 사항이 있다. 문제 1 C# 프로젝트 Properties 의 Target framework .NET Framework 3.5 로 되어있는데 이 상태로는 ToolBox 에서 AppLife Update 컴포넌트가 보이지 않는다. 아래 화면 Toolbox 에 AppLife Update 에 컴포넌트가 4개가 보여야 정상임. .. 2026. 4. 25. AppLife Update . C# 기반 앱 자동 업데이트 배포 관리 솔루션 AppLife Update - C# 기반 앱 자동 업데이트 배포 관리 솔루션 주요 특징 UAC 권한 대행: 관리자 권한이 필요한 폴더(Program Files 등)에 대한 파일 교체.비주얼 관리 : GUI 환경에서 업데이트 로직(프로세스 종료, 레지스트리 수정 등) 지정.델타 업데이트: 변경된 바이트만 추출하여 패키지 크기 최소화.시험배포 가능 : 공개 배포전 시험배포 가능하며, 시험통과이후 공개 배포 설정 편리. 제조사 : Kinetic Jump Software AppLife Update 적용된 VS2015 C# 프로젝트를 VS2022 로 마이그레이션 하기별도정리 : https://igotit.tistory.com/6571 AppLife Update . VS2015 C# 프로젝트 VS2.. 2026. 4. 25. Qt . install build . 지정 폴더에 exe 에 필요한 dll 복사 자동화 Qt 로 빌드한 exe 실행에 필요한 dll (Qt 관련 dll 및 기타 dll )들을 1개의 폴더에 몰기 자동화 CMakeLists.txt# 1. install 폴더 경로를 프로젝트 폴더 하위로 강제 지정if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/install" CACHE PATH "Installation Prefix" FORCE)endif() Qt 에서 자동생성된 CMakeLists.txt 에서의 install 관련 설정 그대로 적용하면 내 exe 가 사용하지도 않는 오만 잡다한 dll 들을 전부 복사해오고 exe 파일도 bin 폴더 하위에 배치시킨다. 지저분.. 2026. 4. 20. Qt . VSCode 에서 개발하기 VSCode Qt 확장 설치 - 확장 검색에서 여러 개 보이나 Qt C++ EXtension Pack 설치하면 됨. Qt Widgets / Qt Quick 둘 다 가능CMake 기반 빌드Qt Designer 연동디버깅 지원필요한 것들(CMake Tools 등) 자동 설치됨 C/C++ Extension Pack 도 설치한다. 컴파일러 연결 - VC++2022 의 MSVC 로 함. Qt 확장시 같이 설치된 CMake Tools 에 컴파일러 연결 시킨다. settings.json 에 아래 추가한다. CMake Qt 를 찾게하는 설정 도 해준다. Qt 설치된 경로에서 msvc 폴더 연결. }, "cmake.generator": "Visual Studio 17 2022", // M.. 2026. 4. 20. cpp 파일의 전역함수, 전역변수 . extern "C" 처리 cpp 파일의 전역함수 . extern "C" 처리 파일 확장자 .cpp 에서 클래스 멤버 외 전역함수 정의하면 C++ 방식 (Name Mangling) 으로 컴파일된다. cpp 내에서만 이함수 사용하는 경우에는 문제없지만 .c 파일에서 이 함수를 호출하려고 하는 경우 대응위하여 항상 extern "C" 로 가드처리한다. // some_file.cppvoid my_c_style_func() //다른 C 파일에서는 호출 불가능함. { }myclass::member_func{ my_c_style_func(); // 클래스 멤버함수 내에서 동일파일내의 전역함수 호출은 가능 }//////////////// extern "C" 로 가드처리하면 // C 파일에서도 호출 가능해짐extern "C" .. 2026. 3. 8. C/C++ . 구조체 typedef struct , struct 차이점 C++ C++ 에서는 구조체 이름 자체가 독립적인 타입. 내부나 외부 어디서든 struct 없이 my_st만 써도 된다. struct my_st{ int i;};void func(my_st * p_myst); // 가능.//// 구조체 멤버가 자기자신 참조 하는 경우 struct my_st{ int i; my_st* p_my_st; // 가능. }; C C 에서는 구조체 이름앞에 struct 명시필수. strruct 부착 안할려면 typedef struct .. 형식으로 선언한다. struct my_st{ int i;};void func(struct my_st * p_myst); // 항상 struct 임을 명시해야함.////////////////// typedef struct typedef s.. 2026. 3. 8. winapi . 100나노초 UTC 시각 . GetSystemTimePreciseAsFileTime . GetSystemTimePreciseAsFileTime 로컬 시간 독립성: 로컬 시간대나 일광 절약 시간제(DST)의 영향을 받지 않는 절대적인 UTC 시간 반환. 고정밀: 일반적인 GetSystemTime이 10~15ms 단위로 업데이트되는 것과 달리, 이 함수는 하드웨어 카운터(QPC)와 연동되어 0.1μs(=100나노초) 의 정밀도. 단위: 1601년 1월 1일 UTC 0시부터의 경과 시간을 100나노초 단위로 반환. 마이크로초 단위로 받으려면 나누기 10.지원운영체제 : windows 8 이후 Windows Server 2012 이후 C++ 코드예 #include #include long long GetUtcNowMicroseconds() { FILETIME ft; // 1. 고정밀.. 2026. 1. 22. C# . VC++ DLL 활용 . DllImport C# 에서 DLL 활용 DLL 에서 정의된 무인자 함수extern "C" __declspec(dllexport) void __stdcall OnActivated_CyNinjaX();extern "C" __declspec(dllexport) void __stdcall OnTerminated_CyNinjaX(); extern "C" → C++ name mangling을 막아서 C-style 이름으로 export__stdcall → 호출 규약 (C#에서는 CallingConvention.StdCall)반환형 void → C#에서는 void로 매핑 가능C# . DLL 임포팅 코드 예 - DLL 활용하는 기능을 C# 클래스로 캡슐화 - 본 DLL 은 여러 인스턴스 생성하면 안되는 것이어서 static 클래.. 2026. 1. 19. C++ . 네임스페이스 네임스페이스 . Namespace- 코드의 이름 충돌 방지 및 논리적인 그룹화 위해 활용. 이름 충돌 방지 (가장 큰 목적)서로 다른 라이브러리에서 같은 이름의 함수(init(), log())를 정의해도 네임스페이스가 다르면 공존 가능. 네임스페이스 기본문법 namespace 이름{....} // ; 없음. 예. #include namespace MyApp { int version = 10; void print() { std::cout 네임스페이스 중첩 및 별칭// C++17 이후 중첩은 간결하게 가능. namespace Company::Project::Module { void task() {}}// 별칭(Alias) - 긴 경로를 짧게 줄임namespace .. 2026. 1. 18. MFC . 대화상자 클래스 템플릿 . 클래스위저드 없이 직접 만들기 MFC . 대화상자 클래스 템플릿 활용시 아래 코드의 클래스 이름 CFixStatusDlg 만 임의 변경해서 활용. 주로 클래스 위저드 오류 발생시 직접 만들어서 활용한다. 상위정리 Visual Studio , Visual C++ 활용 정리.Visual Studio C++ 활용 Visual Studio Visual C++ / C# 1.설치, 설정 주제 비고. Visual Studio 2010 설치. Visual Studio 2013 (Community)무료 설치. Visaul Studio 2015 (Community)무료 설치. - Visual Studio 2015 버전은 이전 버전대비igotit.tistory.com 연관 Visual C++ 2022 . 클래스 위저드 오류 해결. .. 2026. 1. 11. MFC . Tab Control (탭 컨트롤) 사용방법 MFC . Tab Control . CTabCtrl - 대화상자에서 추가로 여러 가지 컨트롤 배치하고 활용 해야하는데 1개의 대화상자로는 비좁은 경우 유용. - CTabCtrl 자체는 화면 전환 기능없고 선택된 탭인덱스만 관리하는 것. - 탭클릭시 실제 화면 전환은 각 탭에 대응하는 Child Dialog 를 Show/Hide 해서 구현된다. [Main Dialog] ├─ TabCtrl ├─ Child Dialog #0 (Tab 0용) ├─ Child Dialog #1 (Tab 1용) ├─ Child Dialog #2 (Tab 2용) 구조 개요부모: 메인 대화상자 (CMainDlg)자식: 탭별 전용 대화상자 (CTabPage_xxx)Tab 변경 이벤트에서 자식 다이얼로그 전환 CTab.. 2026. 1. 11. VC++ . 정적 라이브러리 .Static Library Static 라이브러리Static 라이브러리는 .h, .cpp로 구현된 클래스 소스를 단일 위치에서 일관되게 관리하기 위한 매우 현실적인 수단이다.특정 기능이나 도메인 로직을 하나의 static 라이브러리 프로젝트로 구성해두면,여러 응용 프로그램에서 동일한 클래스 구현을 그대로 공유하면서 사용할 수 있다. 이 방식의 핵심은 클래스 소스의 관리 경로 단일화에 있다. Static 라이브러리를 사용하면 클래스의 구현은 오직 한 곳에만 존재하고, 모든 응용 프로젝트는 그 결과물을 링크하여 사용한다.따라서:클래스는 지속적으로 개선될 수 있고변경 사항은 즉시 모든 응용 프로그램에 반영되며복사·붙여넣기에서 발생하는 구조적 문제를 근본적으로 제거할 수 있다 Static 라이브러리는 “배포를 위한 형식”이라기 보다는 내.. 2026. 1. 7. C++ Embedded Python (임베디드 파이썬) . Python C API . pybind11 C++ Embedded PythonC++ Embedded Python 이란, C++ 애플리케이션 내부에 CPython 인터프리터를 내장하고 Python C API 또는 pybind11을 통해 Python 코드를 실행하는 구조를 의미한다. Python C API vs. pybind11 비교 - pybind11 은 Python C API 호출을 C++ 스타일로 래핑하여 제작된 헤더온리 C++ 러이브러리. - pybind11 에서 11 의 의미는 C++11 표준을 적극적으로 사용했다는 의미. - C++ 프로그램에서 Pyhton 실행만 필요하고 간단하게 활용하는 경우에는 Python C API 만으로 충분. - C++ 프로그램에서 파이썬 측 함수호출 , 구조체 반환 등 많은 인터페이스가 요구되는 경우에는 .. 2026. 1. 4. Qt . QCustomPlot 개요 . 활용 기본 . QCustomPlot Qt 기반 챠트 라이브러리 - 2D 챠트 고속 구현시 유용. 무료. - 현재 (2025.12.30 ) 3D 챠팅 기능은 없음. 챠트 표현 예. QCustomPlot 다운받기 다운로드 주소 : https://www.qcustomplot.com/index.php/download 다운로드 사이트 방문해보면 아래처럼 다운로드 파일 3종이 있는데 소스, 문서, 예제 모두 있는 첫번째 파일 다운 받으면 된다. 압축파일 차단해제 ( 차단해제 방법보기 ) 후 압축푼다. 소스 파일 2개 : qcustomplot.cpp , qcustomplot.h 가 핵심. documentation 폴더에는 도움말 파일 qcustomplot.qch 이 있는데 이는 Qt Creator 에서 볼 수 있.. 2025. 12. 29. Qt . 개요 . 포터블 개발환경 구축 . Qt 개요 Qt는 C++ 기반의 크로스플랫폼 애플리케이션 개발 프레임워크GUI 뿐만 아니라, 네트워킹, 스레딩, 데이터베이스, XML/JSON 처리, OpenGL, 3D, 멀티미디어 등 애플리케이션 개발에 필요한 거의 모든 기능 제공운영체제 독립적 → Windows, macOS, Linux, Android, iOS 등에서 동일 코드로 실행 가능 Qt 구성 요소Qt Core기본 데이터 타입(QVector, QString 등)이벤트 루프(QEvent, QObject, signal/slot)스레딩, 파일/디렉토리, 시간, JSON/XML 처리Qt GUI / WidgetsQWidget 기반 GUI 컨트롤 제공버튼, 테이블, 리스트, 그림판, OpenGL Widget 등QCustomPlot도 QWidget 기.. 2025. 12. 29. C . 실수 일정단위 분할하여 구간 인덱스만들기 . 실수 Z 를 분할 단위 DivStep 으로 분할하여 정수 인덱스 받기. 예 : DivStep 이 0.005 라면 Z 값에 따라 아래와 같이 0 중심으로 대칭적인 인덱스 필요. Z | IdxStep-----------------------------|--------- 0.020 0.015 0.010 0.005 0.000 -0.005 -0.010 -0.015 -0.020 -0.025 0을 중심으로 대칭적인 경우에는, 한 줄 코드로 충분. int IdxStep = (int)(Z / DivStep); 첫 등록 : 2025.11.27최종 수정 : 단축 주소 : ht.. 2025. 11. 27. SQLite . VC++ 프로젝트에 정적 포함( 소스 직접 포함) 활용하기 VC++ 프로젝트 에서 SQLite 소스 직접 포함 시켜 활용하기. SQLite 다운로드https://sqlite.org/download.html 에서 sqlite-amalgamation-3510000.zip (2025년 11월 최신 버전 : 3.51.0): 상기 파일 다운로드 압축 해제하여 3개의 파일 sqlite3.c, sqlite3.h, sqlit3ext.h 를 프로젝트에 추가한다. 프로젝트에 추가방법솔루션 탐색기 → Source Files → 우클릭 → Add → Existing Item → sqlite3.c솔루션 탐색기 → Header Files → Add → Existing Item → sqlite3.h, sqlite3ext.h 추가 설정설정1 . 프로젝트에서 sqlite3.c 만.. 2025. 11. 26. Visual C++ 2022 . 클래스 위저드 오류 해결. E_FAIL has been returned from a call to a COM component 오류증상 Visual Studio 2022 의 C++ 클래스 위저드에서 MFC 클래스 생성하려고 하면 아래처럼 실패. 2025.10.30 최신 버전 17.14.19 으로 업데이트 이후 발생. 해결책 해결책1. VS 종료하고 내 프로젝트 루트에 숨긴 폴더 .VS 를 삭제하고 프로젝트 다시 오픈하면 정상화 된다. 해결책2. 상기 해결책 1로 오류 여전하면, Visual Studio Installer 실행하여 복구 처리한다. 복구후 PC 재부팅. ( 이번 오류 상황에서는 복구하고 해결됨 ) 해결책3. 복구해도 비정상이면 Visual Studio Installer 에서 "이전 버전으로 롤백" 한다. 연관 클래스 위저드 없이 대화상자 클래스 만들기 MFC . 대화상자 클래스 템플릿.. 2025. 10. 30. 이전 1 2 3 4 ··· 18 다음