본문 바로가기

반응형

C, C++, C#

(30)
[C++]시스템 시간 반환 함수(millisecond) 이번 포스팅은 시시템 시간 반환 함수에 대한 포스팅입니다. 간단하게 [2023.08.11-10:10:10.111] 초 와 같은 string 을 반환 하는 함수입니다. 이런 함수는 로그를 남기거나 시간을 기록할때 사용하면 될것 같습니다. ※ 참고 : Visual Studo 2022버전에서는 정상 작동했는데 2015버전에서는 동작하지 않는 것 같으니 참고하세요 include include include include using namespace std; using namespace std::chrono; template std::string string_format(const std::string& format, Args ... args) { size_t size = snprintf(nullptr, 0, f..
[C#]셀프 프로세스 재실행 안녕하세요. 이번 포스팅은 자신의 프로세스를 Kill 후 실행시키는 기능을 구현했습니다. 개발을 하다보면 버그 또는 특정한 로직에 따라서 프로세스를 Kill하고 다시 실행되야되는 경우가 있습니다. 당연히 타 프로세스라면 어렵지 않지만 Self로 프로세스를 다시 살려야 되는 경우가 있었습니다. Self 프로세스를 Kill 후 Start 하는 방법에 대하 고민하다가 윈도우 배치파일을 이용한 방법을 적용했습니다. using System; using System.Collections.Generic; using System.IO; class Solution { static void Main(String[] args) { MakeBatchFile("BatchTest.exe", "BatchFile.bat"); Sta..
C++ double Infinity, -nan(ind) 예외 처리 방법 안녕하세요. 이번 포스팅은 C++ double의 Infinity, -nan(ind) 예외 처리 포스팅입니다. 제 스스로 메모를 위한 포스팅입니다. 실수값인지 체크하는 함수입니다. #include //! double 값의 쓰레기값 여부를 확인 //return - ture : 실수값 //- flase : 쓰레기값 bool IsTrashValue(double x) { int i = _fpclass(x); if ( i == _FPCLASS_SNAN || //Signaling NaN"; i == _FPCLASS_QNAN || //Quiet NaN"; i == _FPCLASS_NINF || //Negative infinity (-INF)"; //i == _FPCLASS_NN || //Negative normaliz..
Boost 라이브러리 환경설정 및 Visual Studio 2019 디렉토리 설정 목적 1) Boost 라이브러리 환경설정 2) Visual Studio 2019 추가 디렉토리 설정 1) Boost라이브러리 환경설정 부스트 버전 : 1.72버전을 사용했습니다. 부스트 라이브러리 다운로드 링크는 다음과 같습니다. 다운로드 링크 ※ D드라이브 기준으로 설치했으니 원하는 디렉토리를 설정해주세요 2) Visual Studio 2019 추가 디렉토리 설정 Visual Studio에서 Boost라이브러리를 사용하기 위한 설정 방법입니다. 시스템 환경변수 설정 후 환경변수를 통해 라이브러리를 연동했습니다. 여기서 설정한 변수 이름을 통해 개발환경에서 사용됩니다. [C/C++]->[일반]->[추가포함 디렉토리] - %BOOST_ROOT% - %BOOST_ROOT%\boost [링커]->[일반]->[..
[BCGControlBar(MFC)] Visual Studio 2019 BCG 설치 및 개발환경 구축 목적 1) BCGControlBar의 설치 과정 2) Visual Studio 2019에서 사용가능하도록 컴파일 수행 과정 BCG를 구매 후 설치 파일 및 라이센스가 있는 상태에서 설치과정을 포스팅합니다. - 해당 포스팅에서 사용되는 버전은 BCGControlBar Pro for MFC version 3.4 입니다. BCG URL : https://bcgsoft.com/index.htm 1) BCGControlBar의 설치 과정 1. BCGControlBar 설치파일 실행 및 라이센스 입력 후 Next 버튼 선택 2. 추가로 Next 버튼 선택 3. 승인 라디오 버튼 선택 후 Next 버튼 선택 4. Complete 선택 후 Next 버튼 선택 5. Install 버튼 선택 6. 설치가 수행 완료되고 F..
c++ <-> c# Marshalling 사용법 목적 C#에서 C++로 구현된 DLL을 이용한다.(개인적인 메모이니 참고하실 분들 참고하세요) 선행사항으로는 C++ DLL이 동일 경로에 있어야함. 포스트의 DLL명은 KJK92.DLL로 정의 1. Default Marshalling (기본) 1.1. bool, short, int, float, double 형식은 각자 C++, C#의 변수를 맞춰 주면 됩니다. C++ DLL Source extern "C" __declspec(dllexport) double DLL_Sum(double a, double b) { return a + b; } C# Source [DllImport("KJK92.DLL", CallingConvention = CallingConvention.Cdecl)] extern public..
GetPrivateProfileString, GetPrivateProfileInt 오류 목적 ini파일을 얻어오는 getprivateprofilestring 사용하면서 발생한 오류 해결 포스팅 개발을 하면서 C++언어와 C#언어를 이용해 개발을 하며 ini를 통해 설정 정보를 수정할 수 있도록 개발을 하는 도중 이유를 알수 없게 ini파일을 읽어오지 못하는 경우가 발생하였다. 위 그림은 ini파일의 저장 인코딩 때문에 발생한 문제점임을 알 수 있었고 간단히 정리하자면 다음과 같다. 1. 함수 사용 시 문자 집합에 따라 차이가 있다. 문자 집합에 따라 GetPrivateProfileㅁㅁㅁA, GetPrivateProfileㅁㅁㅁW로 사용된다. Winbase.h를 보면 아래 코드블럭과 같이 정의가 되어있다. #ifdef UNICODE #define GetPrivateProfileString G..
GetPrivateProfileString, GetPrivateProfileInt 주의사항 목적 ini파일을 사용하면서 발생한 주의사항 포스팅 프로그램을 개발하다보면 ini파일을 사용하는 경우가 있었습니다. 간략하게 설명하면 ini는 [파일경로], [Section], [Key]로 구분지어 텍스트에 입력한 값을 사용하는 역할을 합니다. 해당 정보를 얻어오기 위해 GetPrivateProfileString, GetPrivateProfileInt, GetPrivateProfileSection 등과 같은 함수를 사용하여 간단하게 INI 정보를 가져올 수 있습니다. Info.txt [NETWORK] IP=127.0.0.1 PORT=50003 파일경로 : Info.txt Section : NETWORK KEY : IP Output -> 127.0.0.1 저는 윈도우 환경의 실행경로에 있는 INI파일을 사..

반응형