정리

'LNK4099'에 해당되는 글 1건

  1. warning LNK4099

warning LNK4099

저장소/VC++

정리 잘 되어있는 블로그

http://altprog.com/blog/2054



다음 내용은 gpg 링크가 종종 깨지거나 없어지는듯...은 핑계고 링크 따라가기 귀찮아서 긁어왔다.

출처 : http://www.gpgstudy.com/forum/viewtopic.php?p=91716



  

글쓴이메시지
idlast



가입: 2007년 2월 12일
올린 글: 17

올리기warning LNK4099 이 경고 메시지는 무엇인가요?올려짐: 2007-02-21 10:59
인용과 함께 답변 이 게시물을 del.icio.us에 추가

warning LNK4099: '~.pdb' PDB를 '~.lib' 또는 '~.pdb'에서 찾을 수 없습니다. 디버그 정보가 없는 것처럼 개체를 링크합니다. 
이런 경고가 떠서 컴파일 할때마다 신경이 쓰여요.. ㅠㅠ 
왜 이런 에러가 뜨는 거죠? 
떠도 괜찮은 건지.. 
_________________
(만지작 거리는 단계)
위로


Rica



가입: 2004년 8월 9일
올린 글: 86

올리기올려짐: 2007-02-21 11:05
인용과 함께 답변 이 게시물을 del.icio.us에 추가

디버그 모드에서 디버그 정보를 포함하지 않은 라이브러리를 함께 링크하려고 하면 아마 저럴 겁니다. 
아니면 라이브러리 빌드한 경로가 잘못되었거나.. 

라이브러리 안으로 들어가서 디버깅하시지 않는다면 신경 안 쓰셔도 될 거라고 생각합니다.
위로


zupet



가입: 2003년 5월 13일
올린 글: 2761
소속: EA Seoul Studio

올리기Re: warning LNK4099 이 경고 메시지는 무엇인가요?올려짐: 2007-02-21 13:16
인용과 함께 답변 이 게시물을 del.icio.us에 추가

idlast 씀:
warning LNK4099: '~.pdb' PDB를 '~.lib' 또는 '~.pdb'에서 찾을 수 없습니다. 디버그 정보가 없는 것처럼 개체를 링크합니다. 
이런 경고가 떠서 컴파일 할때마다 신경이 쓰여요.. ㅠㅠ 
왜 이런 에러가 뜨는 거죠? 
떠도 괜찮은 건지.. 


올바른 PDB 정보를 찾지 못할때 그렇습니다. LIB를 만들때 프로그램 디버깅 정보(심볼 및 기타 Debug & Continue 정보)가 LIB 파일에 들어가는 경우와 LIB 파일과 같이 생성되는 PDB 파일에 포함되는 경우가 있습니다. 

LIB에 같이 포함되게 하기 위해서는 디버깅 정보를 /Z7 으로 변경하고 C/C++ Command Line 옵션에 /Yd를 수동으로 입력해주는 것으로 해결이 됩니다. 일단 PDB가 생성되기 시작하면 /Z7을 쓰더라도 PDB안에 디버깅 정보가 몰려가기때문에(이건 M$가 신경을 좀 덜써준듯) 이렇게 사용할 경우 LIB 프로젝트에 pch 생성을 사용해서는 안됩니다. pch를 생성하기 위해선 PDB 파일이 만들어져야 하는데 PDB 파일이 있으면 디버깅 정보가 생성되면서 LIB(내의 obj)안에 포함되어지지 않고 무조건 PDB 파일에 기록되게 되어 있습니다. 

Edit & Continue 가 지원되도록 디버깅 정보 레벨을 올리면서 디버깅 정보를 배포하기 위해선 컴파일시 생성되는 PDB 파일을 LIB와 같이 위치 시켜야 하는데 LIB 프로젝트는 EXE와 달리 최종 PDB를 모아주지 않기 때문에 /Release/vc70.pdb, /Debug/vc70.pdb 파일들을 사용해야 합니다. 이름이 보기 좋지 않고 obj 파일 내에 이 파일에 대한 절대 경로가 포함되기 때문에 같은 폴더에 ~~~.lib, vc70.pdb 를 같이 넣어주거나 C++ 프로젝트 셋팅을 바꿔서 vc70.pdb를 ~~~.pdb 식으로 이름을 변경해주도록 설정해주는게 좋습니다.
위로


비회원
손님





올리기흠.. 에러를 단순히 무시하는 방법은 없나요?올려짐: 2007-02-27 10:41
인용과 함께 답변 이 게시물을 del.icio.us에 추가

디버그 버전에서 디버깅 정보가 없는 lib (외부 lib 등) 를 사용할때도 
자꾸 4099 워닝이 떠서 은근히 거슬리는데 그냥 무시해버리는 방법은 없을까요? 

googling 을 하면 link 커맨드라인에 "/IGNORE:4099" 의 식으로 주면 해결된다고 하는데, 
(undocumented option 이라고 하는군요) 
저렇게 해도 해결이 되지 않네요.
위로


liteplayer



가입: 2003년 10월 30일
올린 글: 43

올리기올려짐: 2007-02-27 10:55
인용과 함께 답변 이 게시물을 del.icio.us에 추가

안녕하세요? 

라이브러리 링크를 소스에 명시할 경우(#prgma comment\(lib,""\)) 에는 
#pragma warning(disable: xxxx) 이 되는걸로 알고있습니다.
위로


비회원
손님





올리기올려짐: 2007-02-27 11:27
인용과 함께 답변 이 게시물을 del.icio.us에 추가

답변 갑사합니다. 

#pragma warning(disable: ####) 는 컴파일러 워닝만 무시해주는데, 
링커의 워닝을 무시하고 싶습니다. 

구글링 해서 나온 방법대로 
추가 command line 옵션에 /IGNORE:4099 -IGNORE:4099 를 붙여봐도 되지 않고 
혹시나 하는 마음에 

#pragma comment(lib, "/IGNORE:4099") 

를 해봐도 되지 않는군요.
위로


비회원
손님





올리기올려짐: 2007-12-13 16:10
인용과 함께 답변 이 게시물을 del.icio.us에 추가

같은문제로 고민했습니다만, 친절히도 

Thanks for the error report - this isn't the first time we've had this request. Unfortunately, we just don't have the resources to address the issue during this product cycle. We will try to revisit the issue in future product cycles. 

요런답변을 MS로 부터 얻을수 있었습니다. -_- 

http://connect.micr...px?FeedbackID=176188
위로


milennium9



가입: 2007년 2월 1일
올린 글: 71

올리기올려짐: 2007-12-20 17:38
인용과 함께 답변 이 게시물을 del.icio.us에 추가

위와 같은 버그가 있을때!! 해당 PDB 파일에 접근을 못할경우가 대다수 더군요. 그래서 저는 임시로 PDB 파일의 이름을 바꿔줍니다. 
이상하게 지우지는 못하면서 이름은 바꿔지더군요. 
가끔 정상종료를 못했을 때 다음번 빌드에서 PDB파일에 접근하지 못하는 버그 같은데요. 일단 이름 바꿔주면 괜찮습니다.
위로