1

정말 오래된 Visual Studio 97 C++ 프로젝트를 Visual Studio 2010으로 이식하는 데 어려움을 겪고 있습니다. 먼저 바로 이전에 얻었던 오류에 대해 약간의 배경 지식을 제공합니다. 이 새로운 LNK1224 오류와 관련된 것일 수 있습니다. 그러나 확실하지 않습니다. 나의 새로운 오류이상한 링크 오류 - LNK1224 : 유효하지 않은 이미지베이스

전에 나는이 오류가 수신되었습니다 뒷조사를 통해

error LNK2005: "void __cdecl operator delete(void *)" ([email protected]@Z) already defined in LIBCMT.lib(delete.obj) nafxcw.lib(afxmem.obj) 

을이 오류에 대한 이유는 MFC 및 CRT 라이브러리를 모두 ""새로운 "삭제에 대한 정의를 포함하기 때문에 것을 발견 "그래서 그들은 충돌했다. Microsoft는 이에 대한 자세한 해결책을 http://support.microsoft.com/kb/q148652/에 제공합니다. 그 중 하나는 모든 파일에서 항상 MFC 헤더 (afx 파일)를 포함시키는 것입니다. 음,이 프로젝트에는 약 100 개의 파일이 있으며 자원을 포함하는 파일을 잘못된 순서로 찾으려고 애쓰는 데 지쳤습니다. 그래서 기본적으로 라이브러리가 특정 순서로로드되도록하는 다른 솔루션을 사용했습니다. 기본적으로 컴파일러에게 특정 라이브러리를 무시하도록 지시해야합니다. 그렇게하면 선택한 순서대로 명시 적으로로드 할 수 있습니다. 제 경우에는 nafxcw.lib이었습니다.

그래서 Project Properties -> Linker -> Input에서 명시 적으로 nafxcw.lib를 무시한 다음 목록의 맨 앞에 명시 적으로 포함 시켰습니다.

Properties window

그래서이 일을 한 후, 내 LNK2005 오류가 멀리 갔다. 그러나 그들은 하나의 단일 링크 오류로 대체되었습니다.

error LNK1224: invalid image base 0x287600000 

내가 제대로 내 이전 링크 오류를 수정하는 경우 나도 몰라이 새로운 링크 오류가 사실은 내가 처리해야 다음 일이, 또는 단순히 기본적으로 중지되어 더 중요한 링크 오류를 생성 링크 과정이 원래 LNK2005 오류가 발생하기 전에 두 경우 모두이 오류에서 찾을 수있는 정보가 많지 않습니다. Microsoft는이 모든 그다지 도움이되지 않습니다 그것은 http://msdn.microsoft.com/en-us/library/3ya3f8wz%28v=vs.80%29.aspx

You specified an invalid base address for the image. Base addresses must be 64KB aligned (the last four hex digits must be zero) and image base must fit within a 32-bit signed or unsigned value.

에 대한 링크에서 많은 말을하고이 문제가 어디에서 오는에 관한 다른 단서를 할 수없는 것 같습니다하지 않습니다. 나는 다음 단계가 무엇인지 모른다.

답변

0

그래, 내 자신의 문제를 해결 한 것 같습니다. 여기 내가 한 일이있다. 나는이 번호가 어디서 왔는지 알 필요가 있었기 때문에 단순히 Notepad ++를 사용하여 오류 메시지에서 "2876"을 찾는 모든 프로젝트 파일을 검색했다. "LINK : 치명적인 오류 LNK1224 : 유효하지 않은 이미지 기반 0x287600000 ".

<BaseAddress>0x287600000</BaseAddress> 

그래서 나는 그것을 열어이 번호가 잘못 궁금 거기에 앉아 : 나는 프로젝트 파일 (.vcxproj)에 다음 항목을주었습니다. 나는이 분야가 무엇인지 알지 못한다. 나는이 파일을 생성하지도 않았고, M $은 그것을 만들었다. IDE가 자신의 입력 파일을 잘못 작성하는 이유는 무엇입니까? 어쨌든, 내가이 "BaseAddress"항목을 찾으려고 할 때, 그것이 무엇인지 알아 내기 위해 너무 많은 제로가있는 것처럼 보였습니다. 그래서 저는 돌아가서 계산했고, 확실히 이것은 32 비트 숫자가 아니며 36 비트 숫자였습니다. 0 중 하나를 삭제하고 다시 컴파일하고 붐을 일으켰습니다. 낮고보기에 문제가 진술서에 언급 된 내용이 MSDN에서 일찌기 찾아 보았지만 클릭하지는 않았다.

자주 발생하는 자동 생성 파일을 통해 습득하지 않기 때문에 문제가 될 수도 있습니다.