본문 바로가기
개발 TIP/Error 모음

Loaded 'xxx.dll', no matching symbolic information found.

by izen8 2012. 2. 15.
반응형

Q : fatal error C1010: unexpected end of file while looking for precompiled header directive

A : #include "stdafx.h"

Q :

Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
The thread 0x110 has exited with code 65 (0x41).

A :

저것은 컴파일 에러가 아니고 컴파일된 프로그램을 실행할 때 발생하는 문제이다.

디버그 모드일때 저런 에러가 난다면 프로그램을 그냥 실행한 게 아니라 디버깅 모드로 실행(F5키)한 경우일 것이다.

저 모듈들은 프로그래머가 만든 모듈이 아니라 O/S의 구성요소 혹은 런타임 라이브러리들로

이것들은 제품 구매자인 최종 소비자에게 릴리즈된 모듈들이므로 당연히 디버깅 정보를 포함하고 있지 않다.

그래서 디버깅 모드로 프로그램을 실행하면 항상 저런 에러가 뜬다.

아울러 리눅스에서 돌리는 문제와도 무관한 에러이니 앞으로도 저런 에러는 계속 무시하고 작업하면 된다.

또한 디버그 모드로 실행된 경우 프로그램이 실행된 후 종료되면 그냥 편집 상태로 되돌아 가는데
코드에 입력하는 부분이나 그런 대기 코드 없이 데이터를 화면에 출력하는 코드들만 있는 경우는,
데이터를 다 출력한 다음에 프로그램이 그냥 종료해버리게 되고
따라서 그냥 편집상태로 되돌아가는 것이다.

실행 결과를 확인해 보려면 Ctrl + F5키로 실행하면 된다.

Q : One or more breakpoints cannot be set and have been disabled.

Execution will stop at the beginning of the program

A :

인터넷 검색하니 원인이 너무 많다.

원인 : 디버깅 심볼이 맞지 않거나 찾을 수 없을 때

1. 프로젝트를 rebuild all로 재빌드 후 다시 디버깅

2. 디버그 모드로 실행했는지 확인 (디버그 빌드를 하신후에 실제로 릴리즈모드로 디버깅 했을 경우)

3 .심볼 파일(.pdb)이 정상적으로 생성되는지 확인

4 .디버그용 프로그램이 실행되는 위치가 현재 심볼 파일(.pdb)이 있는 위치와 동일한지 확인

5. 경로 오류

6. Release 모드로 컴파일하고 나서 디버깅 할려고 할때 이 에러가 발생했다.
-
다시 바꾸고 컴파일하여 해결.

7. 프로젝트 폴더를 다른 곳으로 이동할 때 발생하였다.
- 폴더를 이동시킨후 디버깅 포인터가 찍히지가 않았다. 각각의 프로젝트를 Debug해준후에 DLL을 다시 복사해준 후 해결.

8. 여러 프로젝트를 WorkSpace상에 있을 때 Built->Set Active Project Configuration 이 Break Point를 주고자 하는 프로젝트인지를 확인하자.
- 브레이크를 주고자 하는 해당 프로젝트를 디버그로 바꿔주자.다시 컴파일후에 디버깅을 해보면 된다...

9. 버젼 문제로 6.0->2005 읽을 경우
- 버젼무시 옵션을 체크해준다. 우클릭->중단점->위치(소스코드가 원래 버전과 일치하지 않아도 됨)

Q : Cannot find the insert section "AFX_MSG_MAP" in file ".cpp".

ClassWizard cannot edit or import!! this class.

A : 주석이라고 다~ 쓸데없이 공간만 차지 하는건 아니다. 쓸모 있는 주석도 많다.

해당 CPP 파일에 "AFX_MSG_MAP" 이 주석이 있는지 확인해 보자

( BEGIN_MESSAGE_MAP 함수에 있음. 메시지 맵에 등록 안된 함수는 실행이 안된다.)

ClassWizard는 새로운 코드를 추가시 이런 주석을 가지고 위치를 확인후 추가 한다고 한다.

Q : LINK : warning LNK4089: all references to "DLL명" discarded by /OPT:REF

A :

더이상 해당 DLL을 참조하지 않겠다는 의미

릴리즈 모드로 프로젝트를 빌드 할 경우... 디버그에만 필요하고

현재 릴리즈 모드로 빌드된 프로젝트에는 필요없는 모듈들이 있게 된다.

이 때 이 모듈이 필요 없으니까 빌드 옵션에서 제외한다는 문구를 출력하는 것이다.

아~!

참고로 난 Project Settings의 C/C++ 탭의 Optimizations를 Default로 수정하니

경고 메세지가 나오지 않게 되었다.

Optimizations 옵션은 뭐하는걸까?!

Q : fatal error C1070: mismatched #if/#endif pair in file

A : #if의 끝은 #endif. #endif 누락되지 않았는지 확인해 보라.


Q :

warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

1> c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237) : 'fopen' 선언을 참조하십시오.

A:

"deprecated" 이렇게 나오는 경고는 C/C++ 언어도 표준화되면서 호환성 등의 표준화된 함수를 사용하도록 권장하는 것임.

Visual C++ 6에서는 나오지 않던 경고들이, 2005, 2008 로 변경되면서, ISO 표준을 따르도록 권장하는 것임.


처리방법: 1. #define _CRT_SECURE_NO_WARNINGS //Warning 무시.

2. 기존 : FILE* stream = fopen(cFilePath,"rb");

변경 : FILE* stream;

fopen_s(&stream, cFilePath,"rb");


기존 fopen을 그대로 사용하고 싶다면 1번, 2번은 권장함수로 변경하는 경우.


Q : '파일명' 증분 상태 파일이 잘못되었습니다. 비증분 링크합니다.

A : 해당 파일 삭제. 불필요한 파일로 보임.


Q : Visual Studio 2005 도구상자 문제. 비쥬얼 스튜디오에서 도구 상자 세부항목들이 비활성되었을때

A : Visual Studio 2005나 2008에서 도구상자 창은 떠 있는데 세부항목(컨트롤들)이 보이지 않거나 비활성되었을때

하여튼 도구상자가 이상할때.

실행중인 Visual Studio를 종료 후 아래 경로로 이동한다.

C:\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\VisualStudio\8.0

(Administrator는 사용자 계정, 2005는 경로 마지막이 8.0 2008은 9.0 버젼에 맞게 가면 됨)

해당 경로 안에 보면 toolbox.tbd, toolbox_reset.tbd, toolboxIndex.tbd, toolboxIndex_reset.tbd 등 4개 파일들이 있을 것이다.

해당 파일을 지워 버린 후 Visual Studio를 실행한다.



Q : [ 'C++ 프로젝트에서 IntelliSense 문제 해결' 항목을 참조하십시오 ]

A : IntelliSense 가 정상 동작하지 않을 경우 프로젝트를 닫고 *.ncb 파일 삭제 후 재실행하면 해결된다.

*.ncb

VC++ IntelliSense Database 파일입니다. VS에서 단어의 일부만 쳐도 단어의 전체가 나오고, 특정 자료형위에 F12를 눌렀을때 선언부로 이동하는 등의 기능이 IntelliSense 인데, 이녀석이 사용하는 임시파일입니다. 이 파일이 존재하지 않으면 프로젝트를 처음 열었을때 VS의 상태표시줄에 아래와 같은 메세지가 나오면서 DB를 생성합니다.



Q : [ Visual Studio 2005 디버깅시 브레이크 포인트 설정이 되지 않는 경우 ]

A : 문제가 발생한 해당 CPP 파일을 열어놓고 "파일(F)->저장고급옵션-> 유니코드 65001 " 설정 후 저장한다.

Visual Studio 2005 부터 Visual Studio 기본이 유니코드로 설정되어 그런듯 하다고 어디서 본듯 하다.


Q : [ Visual Studio 2005 다이얼로그 기본 글꼴 MS Shell Dlg 설정이 되지 않을때 ]

A : 현재 팀원들 모두 기본 글꼴을 MS Shell Dlg를 사용하고 있는데 나만 MS Sans Serif가 기본 글꼴로 설정되어

계속 rc 파일에서 직접 변경을 해주어야 했다.

다른 원인이 있을수도 있겠지만(서비스팩이 정상 설치 안됐나...) 어째든 난 일단 이렇게 해결 했다.

"VS2005를 설치한 드라이브의 \Program Files\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\MFC\Application\templates\1042

디렉토리를 열고 all.rc와 dlg.rc에서 "MS 셸 대화 상자"를 "MS Shell Dlg"로 치환(Replace)한다."

라고 아래 출처에 나와 있는데 내 경우엔 all.rc 파일은 있었으나 dlg.rc 파일은 없었다. 대신 dlgall.rc 파일이 있어 그 파일을

수정 하였다.

< 출처 : http://blogs.msdn.com/b/bkchung/archive/2005/10/10/478990.aspx >

이걸로 처리 되지 않음...

[출처] C/C++|작성자 빼끼빼끼

반응형

댓글