정말 뜬금없는 오류가 아닐 수 없다.

우선 나를 비롯한 많은 사람들이, "내가 뭔가 잘못한 게 있나?"하며 프로젝트 설정, 소스코드, 경로 설정을 이잡듯 뒤집어 엎었을 것이다.

한마디로 정리하자면, 내가 뭔가 잘못한 건 아니다. 당당히 남탓을 해도 된다(......)


일단 이 오류를 발견한 계기를 거슬러 올라가본다. 컴퓨터를 옮기기 전 VS2010에서 작업하던 게임 프로젝트가 있었다.

오랜만에 잠깐 손보고 싶어서 프로젝트를 열어봤는데, 설정을 티끌만치도 건들지 않고 전 환경과 동일한 경로, 같은 파일, 같은 폴더를 만들어 두었으나 링크에러만이 나를 반겼다!!

찾아보니 비주얼스튜디오 및 VC 컴파일러가 버전업하면서 sprintf, fprintf등등 std시리즈 함수가 define된 원형 함수를 약간 바꾼 듯 한데,

기존 구 VC 컴파일러로 작업된 SDL라이브러리가 현재는 없는(정확히는 이름이 다른) 함수를 쓰느라 깨져버린 것...

사실 구버전이라고 하기도 무색한게 불과 2010에서까지만해도 잘 되었고, 이런 io함수는 감히 쉽게 바꿀만한 함수가 아니기 때문에...

최적화 목적이 아니었을까 싶지만 대체 왜 바뀐건지 정확히는 모른다. 별로 알기도 귀찮고.


자세한 원인은 밑의 사진을 참조 - 출처는 스택오버플로우("unresolved external symbol __imp__fprintf and __imp____iob_func, SDL2").

함수 포인터 배열을 넘겨주던 기존 방식이, 파라미터 번호에 따라 해당 함수 포인터를 바로 넘겨주도록 바뀐 모양.


그래서 해결법은, 세 가지 방법 중 하나(혹은 둘?)를 고르면 된다.

1. 위의 스택오버플로우 글에 적혀있듯이 __iob_func() 함수를 직접 선언한다. stdin, stdout, stderr에러가 났을 때만 가능하지 싶다.

2. stdio함수 링크 오류인 경우 링커 옵션에 legacy_stdio_definitions.lib를 추가하라카신다.

3. 오픈 소스 라이브러리인 경우, 해당 사이트(나의 경우 sdl)에서 제공하는 라이브러리 프로젝트를 직접 받아 VS2015로 열면 컨버팅을 해주는데, 이걸 컴파일해서 출력된 lib, dll파일을 이용하는 것.



간만에 보는 참 반가운 친구. 오랜만이당☆★☆★!!!!!!!!!!


잡담.

몰랐는데 나 충돌처리 부분을 만들어 뒀었다...........................게임오버 화면도 만들어 뒀었다.

뭐가 귀찮아서 멈춘거지!!!근데 때려치고 비주얼 노벨식 어드벤처 게임 엔진 만들고싶다. 플랫포머는 은근히 그래픽적인 면에서 구현이 귀찮단말이지..

오탘쿠 친구의 부탁으로 급조. 원하는 좌석이 나올 때 까지 새로고침하며 확인하고, 제일 앞줄의 좌석을 선택하고 결제창까지 넘어가는 단순반복 매크로.

아마 거의 모든 사이트, 모든 좌석에 다 대응할 수 있도록 만듦(Y모사이트와 I모사이트만 확인했지만).

대신 사전 준비가 좀 번거롭다. 그래도 최대한 사용하기 편하게 만들려고 노력함.

위치값을 일일이 쳐서 넣는건 불편할 것 같아서 버튼 클릭 후 해당 위치를 클릭하도록 만들었다던지...

파일 공유는 하지 않을 생각..


VS2010, MFC. 약 이틀.

전역후킹, 스크린캡쳐, SendInput 위주로 이용.


증상.

1. VS2010SP1가 설치가 안 되거나, 제거가 안 되고, 복구도 안 된다. (필자의 경우 설치 자체는 되어있다..)

2. "이 컴퓨터 상태에서는 지원되지 않으므로 Microsoft Visual Studio 2010 서비스 팩1을 설치할 수 없습니다." 라고 뜬다.

-> 이 오류는 주로 '용량이 없을 때' 일어나는 오류이므로 용량(5.5GB)부터 체크해야 한다. 확보 후에도 해당 에러가 난다면 계속 글을 읽기 바람.

3. 컴파일 시 COFF변환 오류가 뜬다. (LNK에러)

-> 해당 프로젝트가 VS2010SP1가 설치된 상태에서 생성되었으나 현재 VS2010에 SP1이 적용되지 않았을 때 발생하는 오류라고 한다.


이런!!에러가!!뜬다!!

이거때문에 비주얼 스튜디오를 지우고 깔기를 몇번했던가. 콘솔 프로젝트는 메니페스트 포함->아니오 설정으로 어느정도 커버가 됐는데

MFC 프로젝트는 도저히 컴파일이 안 됐음.

해외 쪽 웹에 있던 해결책은 이것이다. http://stackoverflow.com/questions/5296830/microsoft-visual-studio-2010-service-pack-1-installation/5300990#5300990


그러타!! 이 용자께서는 제어판에서 프로그램 추가/변경을 통해 Microsoft Office Developer Tools (x64)를 설치해보라고 하고 있다!!

우선 난 x86인고로 x86으로 설치해보았다.


요로코롬...

두둥.......두둥... 설치 완료 후 다시 SP1을 설치해본다.. 하지만 이걸 읽는 사람들은 미리 밑부분을 읽어 C++런타임을 제거한 후 설치하기바란다...


으아아!! 설치가 되고 있지 아니한가!!

그런데..........


무려 20~30분 간 기다린 후 마지막 설치 과정에 에러가 났다. 이번엔 또 뭐가 문제란 말인가ㅜㅜㅜㅜㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

해당 문제의 해결책도 찾아보았다..........


(고통)

설치를 취소하고 런타임을 제거한다!!!!!!!!!!!!!!!!!!!!!!!! 욕이 나오고 있으나 생략하겠다!!!!

다시.......ㅋ...........ㅋㅋㅋㅋ........ㅋㅋㅋ 서비스팩을 설치하고 있다.......웃음이 나온다......


그리고 끝으로 성공!

+ Recent posts