※ 요약

윈도우7이나 윈도우10에서는 잘 되던 프로그램이 윈도우XP에서는 "프로시저 시작 지점 InitializeConditionVariable을(를) DLL KERNEL32.dll에서 찾을 수 없습니다."라는 메시지 창이 뜨면서 실행이 안되는 경우가 있다. 

 


※ 원인

원인은 XP에서 지원하지 않는 윈도우 API함수를 사용한게 원인인데, 필자의 경우엔 사용하던 MySQL Connector/C 6.1.3 버전이 XP에서 지원하지 않는 InitializeConditionVariable 함수를 사용해서 발생한 문제였다. 참고로 InitializeConditionVariable는 윈도우 비스타부터 추가된 API 함수이다.


※ 해결
필자는 버전을 내림으로써 간단히 해결했다. 다른 방법도 있겠지만 이 방법이 가장 간단한 방법일 것이다.

해결시 아래 게시글을 참고하면 도움이 될 것이다.

[MySQL] 지난 버전 다운로드 하기


※요약

MFC 프로젝트의 속성 중 런타임 라이브러리의 속성이 위와 같이 다중 스레드 속성으로 된 프로젝트가 있을때, 
PreTranslateMessage( )에서 새로운 다이얼로그를 생성했다가 닫으면 아래와 같이 Debug Assertion Failed이 발생한다.
Assert라 Release모드에서는 발생하지 않고, 디버그에서도 무시하면 아무런 문제가 없지만 매우 찜찜하다.


※해결 방법
원인은 잊어버렸지만 해결방법은 기억에 있다.
아래와 같이 return TRUE;를 해주면 더 이상 발생하지 않는다.



※요약
경고 warning LNK4099: '~.pdb' PDB를 '~.lib(~.obj)' 
또는 '~.pdb'에서 찾을 수 없습니다.
디버그 정보가 없는 것처럼 개체를 링크합니다.

디버그 모드에서 컴파일할때, 디버그 정보를 포함하지 않은 정적 라이브러리를 함께 링크하려고 하면
상기와 같은 경고가 뜰 때가 있다.

이 경고가 뜨는 이유는 올바른 PDB정보(vc90.pdb, vc100.pdb 등 버전에 따라 다름)를 찾지 못 하거나 
해당 *.pdb파일에 접근하지 못할 때, 또는 *.pdb파일은 있는데 그 안에 디버그 정보가 없을때 뜨는 경고다.

경고이기도 하고, 디버깅하지 않는다면 무시해도 기능상의 문제는 없지만 찝찝하다면 수정하는게 정신건상에 좋다.

참고로 *.pdb파일은 Program Debug Database의 약자로써, 디버깅 정보를 구성하는 이진 데이터 형태의 파일이다.

※해결 방법

아래 방법은 디버깅 정보를 *.pdb파일에 포함하지 않고 *.lib파일에 포함하므로 *.lib파일의 크기가 커진다.

사용자에게 배포하는 *.dll 파일도 아니고 *.lib파일이므로 크기가 커져도 별로 상관없다.

그리고 Release모드는 수정하지 않아도 된다.(아마도..ㅋ)


1. 수정하고자 하는 해당 라이브러리의 프로젝트 속성 창을 띄운다.( 단축키는 해당 프로젝트 선택후 Alt+F7 )



2. "구성 속성" -> "C/C++" -> "일반" -> "디버그 정보 형식" : "프로그램 데이터베이스(/Zi)"로 수정한다.



3. "구성 속성" -> "C/C++" -> "코드 생성" -> "최소 다시 빌드 가능" : "아니요(/Gm-)"로 수정한다.



3. "구성 속성" -> "C/C++" -> "명령줄" -> "추가 옵션"에 "/Ylsymbol"를 입력한다.




※요약

프로젝트 속성이 UNICODE일때, TRACE에서 한글을 사용하면 

"_CrtDbgReport: String too long or IO Error" 라는 문구와 함께 에러가 발생할 수 있습니다.

이럴 때는 영어로 찍거나 아래와 같은 코드를 삽입해 주면 됩니다.


소스

⁄⁄헤더에 추가
#include <locale.h>

⁄⁄소스에 추가
#ifdef _DEBUG
  _tsetlocale(LC_ALL, _T("korean"));
#endif

※국가별 로케일 스트링

Primary language

Sublanguage

Language string

Chinese

Chinese

"chinese"

Chinese

Chinese (simplified)

"chinese-simplified" or "chs"

Chinese

Chinese (traditional)

"chinese-traditional" or "cht"

Czech

Czech

"csy" or "czech"

Danish

Danish

"dan" or "danish"

Dutch

Dutch (default)

"dutch" or "nld"

Dutch

Dutch (Belgium)

"belgian", "dutch-belgian", or "nlb"

English

English (default)

"english"

English

English (Australia)

"australian", "ena", or "english-aus"

English

English (Canada)

"canadian", "enc", or "english-can"

English

English (New Zealand)

"english-nz" or "enz"

English

English (United Kingdom)

"eng", "english-uk", or "uk"

English

English (United States)

"american", "american english", "american-english", "english-american", "english-us", "english-usa", "enu", "us", or "usa"

Finnish

Finnish

"fin" or "finnish"

French

French (default)

"fra" or "french"

French

French (Belgium)

"frb" or "french-belgian"

French

French (Canada)

"frc" or "french-canadian"

French

French (Switzerland)

"french-swiss" or "frs"

German

German (default)

"deu" or "german"

German

German (Austria)

"dea" or "german-austrian"

German

German (Switzerland)

"des", "german-swiss", or "swiss"

Greek

Greek

"ell" or "greek"

Hungarian

Hungarian

"hun" or "hungarian"

Icelandic

Icelandic

"icelandic" or "isl"

Italian

Italian (default)

"ita" or "italian"

Italian

Italian (Switzerland)

"italian-swiss" or "its"

Japanese

Japanese

"japanese" or "jpn"

Korean

Korean

"kor" or "korean"

Norwegian

Norwegian (default)

"norwegian"

Norwegian

Norwegian (Bokmal)

"nor" or "norwegian-bokmal"

Norwegian

Norwegian (Nynorsk)

"non" or "norwegian-nynorsk"

Polish

Polish

"plk" or "polish"

Portuguese

Portuguese (default)

"portuguese" or "ptg"

Portuguese

Portuguese (Brazil)

"portuguese-brazilian" or "ptb"

Russian

Russian (default)

"rus" or "russian"

Slovak

Slovak

"sky" or "slovak"

Spanish

Spanish (default)

"esp" or "spanish"

Spanish

Spanish (Mexico)

"esm" or "spanish-mexican"

Spanish

Spanish (Modern)

"esn" or "spanish-modern"

Swedish

Swedish

"sve" or "swedish"

Turkish

Turkish

"trk" or "turkish"




Visual Studio 2010 SP1으로 작업한 프로젝트를 

SP1이 설치 안된 다른 컴퓨터 Visual Studio 2010로 작업하려니 

"COFF로 변환하는 동안 오류가 발생했습니다" 라는 문구와 함께 컴파일 에러가 자꾸 나더군요.

이럴 때는 SP1으로 업데이트 해주면 됩니다.

"Visual Studio 2008 - fatal error LNK1000: Internal error during IncrBuildImage" 오류처럼 잠시 당황했었네요.


업데이트 할 때는 자신의 Visual Studio 언어에 맞는 서비스 팩을 다운 받으셔서 설치하면 됩니다.



다운로드 링크




Visual Studio 2008에서 fatal error LNK1000: Internal error during IncrBuildImage 라는 에러가 뜰때가 있습니다.

이는 SP1을 설치해 주면 더 이상 발생하지 않습니다.

주의할 점은 자신의 비주얼 스튜디오 언어에 맞는 설치 파일을 받아서 설치해야 합니다.


Microsoft Visual Studio 2008 서비스 팩 1 iso 다운로드



+ Recent posts