라벨이 Visual Studio인 게시물 표시

CL : fatal error C1083: 컴파일러 중간 파일 파일을 열 수 없습니다.

VisualStudio 2010에서 C++ 솔루션을 빌드하려고 하면 계속 다음과 같은 오류가 발생했습니다. CL : fatal error C1083: 컴파일러 중간 파일 파일을 열 수 없습니다. 'C:\윈도 TEMP 경로\_CL_렌덤문자' : No such file or directory 

Visual Studio 디버깅 시 멈춰있는 문제

어느날부터 비주얼 스튜디오(2010)에서 디버깅을 시작하면 프로그램이 실행되지 않고 그냥 멈춰있는 증상이 발생했습니다. 원인이 뭔가하고 한참 해맸는데, 가만히보니 아래쪽에 이런 메시지가 표시되고 있었습니다. "C:\Windows\System32\rasapi32.dll에 대한 기호를 로드하고 있습니다"

RapidXml에서 문자열 파싱하기 및 주의사항

C++에서 XML 파싱에 사용하는 라이브러리 중 RapidXml이 있습니다. 속도가 빠르고, 헤더 파일로만 되어 있어서 단순히 파일을 복사하는 정도만으로 쉽게 사용할 수 있다는 장점이 있습니다. 더군다나 MIT 라이선스로 사용 가능하므로 상업용 프로그램에도 유용하게 사용할 수 있습니다. 공식 사이트: http://rapidxml.sourceforge.net 그런데 주의사항이 있습니다. 우선 아래를 봐주시기 바랍니다. string strXml = "<?xml version="1.0" encoding="utf-8"?><books> ... (중략) ... </books>"; xml_document<> doc; doc.parse<0>( (char*)strXml.c_str() ); xml_node<>* root = doc.first_node(); printf("root 노드 이름: %s\n", root->name()); 위와 같이 하면 std::string으로부터 XML을 파싱할 수 있습니다. 여기서 빨간색 부분을 보시면 const char*를 char*로 변환하는데요, 해보시면 별 문제 없이 잘되는 것 같아 보입니다. 하지만 parse()가 문자열을 변경하지 않는다는 보장이 없습니다.만약 변경해버린다면 예상치 못한 문제가 발생할 것이고, 정말 찾기 힘든 버그가 될 것입니다. 별 문제가 없더라도 아래와 같이 문자열을 복사해서 사용하는 방법을 권장해드립니다. string strXml = "<?xml version="1.0" encoding="utf-8"?><books> ... (중략) ... </books>"; char* sz = new char[strXml.size() + 1]; strcpy(sz, strXm...

프로세스 강제 종료 불가 시.

특정 프로세스를 강제 종료 하려는데... "실행 중인 작업 인스턴스가 없습니다." 이런 메시지가 나타나면서 종료가 안되는 문제가 있었습니다. 작업 관리자에서 "프로세스 종료", "프로세스 트리 종료" 해봐도 안되고, cmd에서 taskkill 해봐도 안되고... 그런데 이게 부모 프로세스를 종료하면 자동으로 종료가 되네요.. (제 경우에는 Visual Studio가 부모 프로세스였습니다. ㅋ) 참고: DEVPIA http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=917792&ref=917791

Visual Studio 2010 pdb 파일을 이용해서 디버깅 하는 방법

Visual Studio 2010에서 빌드하면서 exe 파일과 함께 pdb 파일이 생겼습니다. 디버그에 사용된다는 것 외에는 잘 모르고 있었는데, 현재 실행 중인 프로그램을 디버그 할 일이 생겨서 사용법을 찾아보았습니다. 복잡한 내용은 잘 모르겠지만, 다음과 같은 방법으로 디버깅을 시작할 수 있었습니다. 빌드하면서 생성된 exe 파일과 pdb 파일을 잘 보관합니다. (두 파일은 짝을 이룹니다.) 디버그할 exe 파일을 실행합니다. exe 파일과 같은 위치에 "1."의 pdb 파일을 복사해둡니다. Visual Studio 2010을 실행하고, 해당 프로그램의 솔루션을 엽니다. "Windows 작업 관리자"를 실행합니다. 현재 실행 중인 exe 파일의 프로세스를 찾습니다. 찾았으면, 우클릭해서 "디버그"를 선택합니다. 디버거를 연결하겠냐는 확인 창에서 "디버거 연결"을 선택합니다. 그러면 연결할 디버거를 선택하는 화면이 나타나는데, "4."에서 솔루션을 열어둔 인스턴스(Visual Studio 2010 프로그램)를 선택합니다.  ※ 만약 exe 파일과 pdb 파일이 서로 다른 빌드 때 생성된 것이라면 디버깅할 수 없습니다. 참고 Visual Studio 로 디버깅하는 방법 Debugging With Minidump