목록Development/C & C++ (14)
루토's sssssstory
Visual Studio 6.0에서 C 확장자로 된 파일을 CPP로 컴파일 하거나 CPP 확장자로 된 파일을 C 파일로 컴파일 하기 위해서는 아래와 같은 옵션을 사용하면 가능하다. /TC : CPP 확장자를 가진 파일을 C 확장자로 컴파일 /TP : C확장자를 가진 파일을 CPP 확장자로 컴파일 아래는 MSDN의 내용 /Tc, /Tp, /TC, /TP (Specify Source File Type)Syntax /Tcfilename /Tpfilename /TC /TP The /Tc option specifies that filename is a C source file, even if it doesn’t have a .C extension. The /Tp option specifies that filena..
참고 : http://msdn.microsoft.com/ko-kr/library/ms235342(VS.80).aspx 현상 : 1.ShellExecute를 이용해서 외부 응용프로그램을 실행했을 때 정상적으로 실행되지 않음. 2.Return value를 확인한 결과 SE_ERR_ACCESSDENIED 로 나옴. 3.해당 에러의 메시지는 "The operating system denied access to the specified file." 원인 : 처음에는 응용프로그램의 권한에 관련된 문제인 줄 알았으나 확인 결과 해당 응용프로그램이 Visual Studio 2005에서 빌드되었는데 실행하는 호스트에는 VC 2005의 CRT가 설치되어 있지 않았음. (또는 VC2005가 설치되어 있어도 설치된 .NET ..
Visual Studio 2005에서 디버깅 시에 발생하는 오류 Run-Time Check Failure #2 - Stack around the variable 'xxxxxxx' was corrupted. VS.NET VC++ 에서 사용하던 소스인데 VS2005 VC++로 컨버젼하여 사용중이던 소스. xxxxxxx 변수에 들어갈 사이즈를 초과할 경우에 발생한다. char[] 타입일 경우 사이즈를 늘려서 해결.
C++은 C언어를 지원한다. 그래서 예전의 C소스를 가져다가 사용할 수 있다. C 언어는 symbol에서 함수의 이름만으로 찾을 수 있다. 이 것은 C언어가 같은 함수 이름을 사용하는 것을 허용하지 않기 때문인데, C++에서는 다형성으로 인해서 같은 이름을 사용할 수 있다. 그래서 함수이름만으로 찾는 것이 불가능하다. 이런 것을 위해서 내부적으로 함수 이름을 변경해주는데 이것이 name mangling 이다. 다음과 같이 된다. int foo(void) {return 1;} int foo(int ) {return 1;} void goo(void) { int i=foo(), j=f(0); } int _foo_i (void) {return 1;} int _foo_v (int ) {return 1;} void..
Error LNK2005 : _DllMain@12 already defined cpp파일 내에서 DllMain 함수를 직접 구현하여 사용할 때 CString 등을 위해서 afx.h 를 include 시키게 되면 발생하는 에러이다. 일반적으로 이 LNK2005 에러는 다른 라이브러리 내에 DllMain이 포함되어 있는 경우에는 http://support.microsoft.com/kb/148652 에서 지시하는 대로 해결을 할 수가 있지만 cpp 파일내에서 DllMain을 직접 구현하여 사용할 경우에는 해당이 되질 않는다. 하지만 CString은 써야겠고... 이럴 때에는 afx.h 를 include시키지 말고 atlstr.h를 include시켜 사용하면 해결 할 수 있다. // #include #inclu..
The Function Pointer Tutorials Extensive Index 1. Introduction to Function Pointers 2. The Syntax of C and C++ Function Pointers 3. How to Implement Callbacks in C and C++ ? 4. Functors to encapsulate C and C++ Function Pointers 5. Topic Specific Links ------------------------------------------------------------------------------- Function Pointer에 대한 Tutorial이 있는 곳. Lars의 홈페이지 출처 : http://www.n..
출처 : http://www.ibm.com/developerworks/kr/library/opendw/20061219/ [오픈 디벨로퍼웍스]는 여러분이 직접 필자로 참가하는 코너입니다. 이번에는 김현우 님이 작성한 애플리케이션 개발시의 메모리 부족 에러에 대비하는 메모리 누수 발견 프로그램 개발 방법을 함께 살펴봅니다. 필자는 DVD 레코더와 셋톱박스의 복합 모델을 개발하는 팀에 소속되어 있다. 현재 유럽에서는 아날로그 방송을 디지털로 서서히 대체하고 있기 때문에, 관련 제품의 개발 요청이 쇄도하고 있다. 얼마 전 유럽을 타깃으로 3개의 유사 모델(D197, D198, D199)을 개발하고 있을 때의 일이다. 우여곡절 끝에 기본 모델인 D197 개발을 마치고 양산 시켰으며, D198도 완료하여 QA 그룹..
프로그램의 세계 1999년 12월에 특집 기사 글쓴이 : 배재현(goldbat@ncsoft.co.kr) ( NC소프트 ) HTML Formated & Rearranged : Daeyeon, Jeong TCP/IP 를 기반으로 한 온라인 게임 제작 최근들어 온라인 게임들이 점점 대중화되며 인기를 끌고 있다. 특히 수천 명이 하나의 서버에서 게임 내 가상스페이스를 공유하며 플레이하는 그래픽 머드의 개발과 동작원리는 게임 개발을 시작하려는 사람들에게 많은 관심의 대상이 되고 있다. 3부에서는 간단한 그래픽 머드의 서버와 클라이언트 프로그램을 구현하고 이를 통해 그 구조를 살펴본다. 온라인 게임과 싱글유저 게임은 사실 별다른 차이점이 없다. 이를 RPG로 한정하고 생각한다고 해도 유일하게 다른 점은 한가지뿐이다..
크리티컬 섹션에 관련된 함수 중의 TryEnterCriticalSection은 EnterCriticalSection함수 대신에 사용할 수 있는 함수인데 이 녀석은 Windows NT이상에만 사용할 수 있기 때문에 사용하기 위해서는 다음과 같은 일을 해주어야 한다. 1. #include ; TryEnterCriticalSection은 winbase.h에 선언되어 있다. 2. _WIN32_WINNT Define 두 가지 방법이 있다. 첫번째는 직접 소스코드에 define 해주거나 프로젝트 설정에서 Define해준다. 1) _WIN32_WINNT 은 windows.h를 include하기 전에 define해준다. #ifdef WIN32 #ifndef _WIN32_WINNT #define _WIN32_WINNT ..
'_beginthreadex': identifier not found, even with argument-dependent lookup 크리티컬 섹션에 관련된 함수를 사용할 때 종종 빌드 에러를 만나게 되는데 VS.NET 에서 Win32 Console 프로젝트 기본 생성시에는 Run-time Library가 Single-Thread Debug로 잡혀있기 때문에 _beginthreadex를 찾지 못하여 빌드 에러가 발생한다. 정상적으로 빌드를 하려면 프로젝트의 속성 창을 열어서 'C/C++ - Code Generation' 의 Run-time Library 항목을 Single Thread에서 Multi Thread로 바꾸어 주면 된다.