Visual Studio 2008 이상에서 atlhtml.h 사용 by TurboK

라이센스 문제로 Visual Studio 2008 이상 버전에서 ATL Server 관련 코드가 빠져서 발생하는 문제임.

http://www.codeplex.com/ 에서 가서 atlhtml.h 등 파일 다운 받아 include 경로 지정하고 사용하면 해결됨.



서울대 행정대학원 최종훈 교수의 인생교훈 by TurboK

1. 갈까 말까 할 때는 가라.

2. 살까 말까 할 때는 사지 마라.

3. 말할까 말까 할 때는 말하지 마라.

4. 줄까 말까 할 때는 줘라.

5. 먹을까 말까 할 때는 먹지 마라.


200% 공감!!


SQL Server 18456 Error by TurboK

SQL Server 상용 시 로그인할 때 18456 오류가 난다면 다음을 체크해 보자.

Management Studio를 Properties(속성) 메뉴 선택.

Security 탭에서 Server Authentication 옵션이 "SQL Server and Windows Authentication Mode"로
설정되어 있는 지 확인.

그래도 안된다면 Sql Server Configuration Manager를 실행하여 해당 DBMS의 TCP/IP 모드가 Enable인지 검사.

DB에 접속할 때 보통 ID/Password를 이용하고 TCP/IP로 접속하지 않나 싶은데 SQL Server는 기본값이 다르네요. 예전엔 안 그랬던 것 같은데 버전 올라가면서 달라진듯~


LNK2038: _ITERATOR_DEBUG_LEVEL 불일치 오류 by TurboK

MPI를 이용한 병렬처리 작업을 Visual Studio 2010에서 하고 있는데 다음과 같은 오류가 난다.

A.lib(B.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '0' 값이 '2'(C.obj에 위치) 값과 일치하지 않습니다.

A.lib를 링크하여 빌드하려고 하는데 매크로 _ITERATOR_DEBUG_LEVEL의 값이 기 빌드된 A.lib 상에 정의된 내용과 이를 연결(링크)하여 사용하는 쪽에서의 정의가 달라서 발생하는 오류임.

문제 해결을 위하여 _ITERATOR_DEBUG_LEVEL의 정의를 따라가 보니 DEBUG 모드에서는 (정확히 말하면 매크로 _DEBUG가 정의되어 있다면) 2의 값을 갖고 그렇지 않은 경우에는 0의 값을 갖도록 정의되어 있다. Release 모드로 빌드했으니까 0값을 가져야 정상인데 2의 값을 갖는다는 것은 어딘가에 _DEBUG가 정의되어 있다는 뜻이다.

그래서 프로젝트 속성, 코드 다 뒤져봤는데 어디에도 없다. 그런데 Release 모드에서 _DEBUG 타입핑 해 놓고 마우스 올려 보면 "#define _DEBUG 1"이라고 나온다. 일하다 보면 이런 경우가 정말 난감하다. 아무래도 Visual Studio 2010 버그인 듯 추측하며 해당 라이브러리를 이용하는 소스 앞쪽에 다음 문장을 넣었다.
1: // Release 모드에서 LNK2038 오류가 나서 넣었음
2: // Release 모드임에도 불구하고 _DEBUG가 정의되어 있어 발생하는 현상임. 2010 버그인듯...
3: #ifdef NDEBUG
4: #ifdef _DEBUG
5: #undef _DEBUG
6: #endif
7: #endif
Release 모드(NDEBUG 정의됨)일 경우 강제로 _DEBUG의 정의를 날려버리는 문장임. 이렇게 하고 하니 문제없이 잘 빌드되고 실행도 잘 된다.


[일반] 지우기 애매한 블럭 주석달기 by TurboK

프로그래밍하다보면 작성해 놓은 코드를 지우기는 애매하고 다시 만들긴 해야 하고 하는 경우가 있다.
이럴 때, / *   주석   * /를 이용하여 주석 처리하고 작업하는 경우가 있는데 이 때 다음과 같이 주석을 달면 편하다.
1: / * 
2: 코딩한 코드들...
3: 코딩한 코드들...
4: / / * / <-- 키포인트
왜냐? 다시 살리고 싶을 때 다음과 같이 하면 끝이기 때문이다. 아니면 지우던지...
1: / / *   <-- 키포인트
2: 코딩한 코드들...
3: 코딩한 코드들...
4: / / * /
조금 더 나아가 다음과 같이 주석을 달아 놓으면 코드를 보는데 많은 도움이 된다.
1: / / *   / /  여기는 어떤 일을 하는 루틴임...
2: 코딩한 코드들...
3: 코딩한 코드들...
4: / / * /
이상 일하면서 터득한 꼼수 중 하나였음.


Epilogue: / * 가 다른 문자로 계속 바뀌어 들어가 부득이 중간에 공백을 하나씩 두었음...


1 2 3 4 5 6 7 8 9 10 다음