본문 바로가기

프로그램언어/C++

Makefile 만들기 INC = -I. SRCS = myfirst.cpp myfirstinst.cpp myfirstmain.cpp OBJSS = myfirst.o myfirstinst.o myfirstmain.o TARGET = myfirst all : $(TARGET) $(TARGET) : g++ -o $(TARGET) $(SRCS) $(INC) clean : rm -f $(OBJS) $(TARGET) new : $(MAKE) clean $(MAKE) 더보기
gdb을 이용한 디버깅 방법 [ STL 디버깅 ] 리눅스 프로그램상에서 gdb을 이용하여 디버깅중 콘테이너에 들어 있는 데이터를 알고자 할때 사용하는 방법입니다. 실제로 구글박사에게 검색을 통해 좋은 정보가 많이 널려져 있습니다. 제가 깜빡 증후군( 나이먹으면 다 그렇게 된다고 하는데 저도 그런가(?) ) 때문에 블러그에 정리하는 방식을 취하고 있습니다. 먼저 gdb을 이용하여 디버깅하기 위해서는 다음과 같은 스크립트를 복사해놓고 사용을 하셔야 됩니다. # # STL GDB evaluators/views/utilities - 1.03 # # The new GDB commands: # are entirely non instrumental # do not depend on any "inline"(s) - e.g. size(), [], etc # are ex.. 더보기
클래스의 데이터의 값을 string으로 반환해서 받기. 클래스의 데이터를 설정을 한 후, 한방에 관련된 설정을 string으로 받아 정보를 볼 수 있도록 설정하는 방법을 찾던중 노가다로 일일이 나열하던 문제를 깔끔하게 정리하기 위해서 사용해 봤다. #include #include #include class Name { private: int idx; int index; public: Name() : idx( 0 ), index( 0 ) { } ~Name() { } public: void set( int _idx, int _index ) { idx = _idx; index = _index; } std::string toString() const { std::ostringstream oss; oss 더보기
[Socket] bind socket error 오랜만에 소켓을 이용하여 서버쪽에 데이터를 가져오는 간단한 프로그램을 만들던중에 다음과 같은 socket bind 에러가 발생하였습니다. 2009/10/07 00:48:32,235,../../../xxxxx.cpp(355)DEBUG- [do_listen]apr_socket_bind error 2009/10/07 00:48:32,235,../../../../../../xxxxx.cpp(308)DEBUG- [start]do_listen error 기존에 잘 사용하던 소켓 구성이였기에 무엇이 문제인지 확인하던 차에 예전에 알고 있었던 내용이였지만, 오래되서 생각지도 못했네요. 소켓이 이미 bind되서 올라간 포트가 있다면 당연히 발생하는 문제였는데 말이죠. 즉 제가 소켓을 이용하여 서버 올렸던 포트가 이미 사.. 더보기
[MFC] 출력창을 이용한 디버그 내용 출력. 이것은 몰랐다!!! 참 바보스럽다는 생각에 눈물을 머금고 내용을 정리를 한다. MFC 대학때 잠깐.... 그 후, 실무에서도 잠깐... 3년이 지나 갑자가 MFC로 작업을 하게 되었는데.. 아... 이것은 무엇인가.. 앞은 보이지 않고... 내용을 확인하려니 일일이 디버깅하는것도 지겹고... 그냥 내용만,, log4cxx 처럼 보는것은 없을까... 생각중에 두가지 방법이 있다... //출력하기 위한 방법 첫 번째 char str[256]; memset( str, NULL, sizeof(str) ); sprintf_s(str,"XandY %d x %d \n", m_nPoint.x, m_nPoint.y); OutputDebugStringA(str); // 출력하기 위한 방법 두 번재 #ifdef _DEBUG.. 더보기
zlib을 이용한 간단한 예제 unsigned char* inbuf; unsigned char* outbuf; unsigned long INBUFSIZE; unsigned long OUTBUFSIZE; inbuf=new unsigned char[1000]; strcpy((char*)inbuf,"Is good?"); INBUFSIZE=strlen((char*)inbuf)+1; fprintf(stdout,"테스트용 문자열은 다음과 같다.\n"); fprintf(stdout,"%s\n\n",inbuf); //Upon entry, destLen is the total size of the destination buffer, //which must be at least 0.1% larger than sourceLen plus 12 bytes... 더보기
zlib 컴파일 에러발생. - 개발환경 Visual C++ 2008 Express 1>------ 빌드 시작: 프로젝트: zlib, 구성: DLL ASM Debug Win32 ------ 1>Assembling... 1> Assembling: D:\WorkSpace\zlib-1.2.3\contrib\masmx86\inffas32.asm 1>D:\WorkSpace\zlib-1.2.3\contrib\masmx86\inffas32.asm(647) : error A2070:invalid instruction operands 1>D:\WorkSpace\zlib-1.2.3\contrib\masmx86\inffas32.asm(649) : error A2070:invalid instruction operands 1>D:\WorkSpace\zli.. 더보기
log4cxx 사용에 필요한 라이브러리 추출. log4cxx는 http://www.apache.org 사이트에서 정보를 얻을 수 있습니다. 다들 아시겠지만, 기본적으로 사용해보셨을 꺼라는 전제를 가지고 작성하였습니다. 기본적인 강좌는 다른 사이트에서 정보를 얻어서 오시면 편리 할 것입니다. 지금 사용하고자 하는 곳은 리눅스 환경에서 log4cxx을 이용하여 로그를 남기고자 하는 방법이므로 컴파일 하는 방법부터 하나 하나 정리해보도록 하겠습니다. 첫 번째로 log4cxx을 사용하기 위해 3가지가 필요로 합니다. ㅇ 다운로드 http://www.apache.org 사이트에서 - apr http://apr.apache.org/ - apr-util http://apr.apache.org/ - apache-log4cxx http://logging.apache.. 더보기