1. 개요

 

 

MFC 에서 사용 가능한 libcurl DLL 파일 및 LIB 파일 묶음 입니다.

 

SSL 미 사용 버전으로 최신 버전 CURL 유지를 위하여 공유 합니다.

 

정적 라이브러리에서 MFC 사용 가능한 환경으로 작성 된 파일이며 사용 시, CURL_STATICLIB 를 전처리기에 추가해 주어야 합니다.

(참조 : https://ittravelkr.tistory.com/24?category=406899)

 

 

 

 

 

 

libcurl-7.65.1.zip

 

 

1. 개요

 

MFC 에서 Json 포맷의 스트링을 파싱할 경우 사용 할 수 있는 open source

 

2. 설치

 

공식 git 페이지(https://github.com/open-source-parsers/jsoncpp) 에서 소스 코드를 다운로드 받아, Visual Studio IDE에서 프로젝트를 Import 및 Compile 하여 사용

 

이때, lib 형식과 dll 형식의 2가지 방식으로 컴파일 가능

 

3. 오류 대처

 

jsoncpp를 컴파일 하여 나온 결과물(lib, dll)을 프로젝트에 import 하여 사용하는 경우 debug 모드에서는 별 문제가 없으나, release 모드로 컴파일 시 [json_value.cpp : fatal error C1083: 컴파일러 생성 파일 파일을 열 수 없습니다. '../../build/vs71/release/lib_json/json_value.asm': No such file or directory] 와 같은 에러가 생기는 경우 다음과 같이 설정 값을 수정 하는 것으로 해결 가능

 

 

붉은 박스로 표시한 영역의 값을 목록 없음(No listing)으로 변경

 

 

비트 연산자를 통한 각 비트의 설정 값(1, 0) 얻어오기

int getAbit(unsigned short x, int n) 
{
 return (x & (1 << n)) >> n;
}

 

각 비트 값 설정

unsigned short setAbit(unsigned short x, int n, int value) 
{
 if (value == 1)
  return (unsigned short) (x | (1 << n));
 else
  return (unsigned short) (x & (~(1 << n)));
}

 

참조용 소스 업로드

 

TryIconAgent.zip

 

libcurl.lib 를 링크하여 사용하는 경우

 

error LNK2019: __imp__curl_global_init
error LNK2019: __imp__curl_global_cleanup
error LNK2019: __imp__curl_easy_cleanup
error LNK2019: __imp__curl_easy_perform
error LNK2019: __imp__curl_easy_setopt
error LNK2019: __imp__curl_easy_init

 

위와 같은 에러 메시지를 보게 될 수 있다.

 

이는 static lib를 사용하겠다는 명시를 하지 않아서 발생하는 에러로 CURL_STATICLIB 를 전처리기에 추가하거나 curl.h include 전에 #define 으로 선언해 주면 된다. 

최근 Database 입력 툴을 만들다 보니 많은 쿼리문을 배열로 묶어서 for문을 이용해 동작시키는 경우가 있어 2차원 배열을 쓰게 되었다.

 

TCHAR *pszQuery[] = {
	"", ""
};
int size;

// 배열 행의 개수
size = sizeof(pszQuery)/sizeof(pszQuery[0]);

// 배열 열의 개수
size = sizeof(pszQuery[0])/sizeof(pszQuery[0][0]);

// 배열 개수
size = sizeof(pszQuery)/sizeof(pszQuery[0][0]);

 

 

이상

 

 

1. 개요

C++/MFC 등의 프로젝트에서 OLE DB를 사용하여 MS-SQL에 직접 연결하고자 하는 경우 연결에 사용하는 문자열을 쉽게 작성하기 위한 방법

 

2. 방법

1. txt파일을 만드시고 이름을 XXXX.udl로 변경

2. 저장한 파일 더블클릭

3. 데이터 연결 속성-공급자 탭에서 Microsoft OLE DB Provider for SQL Server 선택

4. 연결탭에서 서버명과 암호 데이터베이스를 선택한 후 연결테스트

5. 연결테스트가 성공이라면 확인 버튼을 누른 후 실행한 파일을 텍스트 편집기로 읽기

 

[oledb]

; Everything after this line is an OLE DB initstring

Provider=SQLOLEDB.1;Persist Security Info=False;User ID=XXXX;Initial Catalog=XXXX;Data Source=XXXX

 

1. 개요

 

C/C++ Project 중에서 SNMP를 통해 장비의 정보를 얻어오는 기능이 있다

net-snmp(www.net-snmp.org)라는 Open 소스를 이용하면 되는데, 이 때 장비의 각 성능을 얻어오기 위해 필요한 OID가 있어야 하기에 따로 정리해 두도록 한다.

 

2. OID

 

CPU Statistics

Load
1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1
5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3

 

[CPU]
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0

 

[Memory Statistics]

Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0

 

[Disk Statistics]

The snmpd.conf needs to be edited. Add the following (assuming a machine with a single ‘/’ partition):

disk / 100000 (or)

includeAllDisks 10% for all partitions and disks

The OIDs are as follows

 

Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1
Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1
Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1
Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1

System Uptime: .1.3.6.1.2.1.1.3.0

1. 개요

Dialog 기반 소스 생성 시 Enter, ESC 키를 누르면 다이얼로그가 바로 종료 되는 문제점을 개선해 보도록 한다.

 

2. 소스코드

ResourceView의 다이얼로그를 하나 열고 Ctrl + w 키를 눌르 매니저를 호출한다.

Message Maps에서 Object ID를 다이얼로그 아이디로 선택하고 Messages에서 PreTranslateMessage를 더블클릭하여 함수를 생성한다.

 

BOOL CViewerDlg::PreTranslateMessage(MSG* pMsg) 
{
	if(pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN)
		return TRUE;
	return CDialog::PreTranslateMessage(pMsg);
}

 

 

다음의 소스 코드를 입력한다.

'프로그래밍 > C++' 카테고리의 다른 글

[C/C++ OLE DB] DB 연결 문자열 쉽게 만들기  (0) 2014.04.17
SNMP OID  (0) 2013.10.17
[MFC] 마우스 커서 모래시계(대기) 변경  (0) 2013.06.13
시간 구조체  (0) 2013.04.26
Wininet을 이용한 URL 파일 다운로드  (1) 2013.04.24

 

 

 

 

 

 

 

 

1. 개요

MFC 프로그래밍을 하다 보면 많은 데이터를 화면에 표시하는데 있어 시간이 오래 걸릴 경우 프로그램이 죽지 않았다는 것을 표시하기 위해 많이 쓰는 것이 바로 마우스 커서 모양을 변경 시키는 부분일 것이다. MFC 에서는 아주 간단하게 커서 모양을 모래시계로 바꿀 수가 있다.

 

2. 소스코드

BeginWaitCursor();
Sleep(...)
EndWaitCursor();

위의 소스에서 Sleep 으로 표시 한 부분에 오래 걸리는 작업을 넣어 두면 된다.

단, 위의 소스로 안 되는 경우가 많은데(Thread로 분리해서 사용 하는 경우) 그럴 때는 직접 시작 전에 커서를 바꿔주고, 작업이 종료 되는 시점에서 다시 커서를 변경 해 주면 된다.

HCURSOR hCursor;     
hCursor = AfxGetApp()->LoadStandardCursor(IDC_WAIT);     
SetClassLong(*AfxGetMainWnd(),GCL_HCURSOR,(LONG)hCursor);

작업영역

hCursor = AfxGetApp()->LoadStandardCursor(IDC_ARROW);     
SetClassLong(*AfxGetMainWnd(),GCL_HCURSOR,(LONG)hCursor);

이렇게 하면 커서를 직접적으로 변경하는 것이기 때문에 해당 영역 안에서 커서가 수정이 된다.

'프로그래밍 > C++' 카테고리의 다른 글

SNMP OID  (0) 2013.10.17
[MFC] Enter, ESC 키로 Dialog 종료 방지  (0) 2013.06.28
시간 구조체  (0) 2013.04.26
Wininet을 이용한 URL 파일 다운로드  (1) 2013.04.24
헝가리안 표기법  (0) 2013.04.24

+ Recent posts