메이플스토리에서는 개발 단계에서 64비트 빌드를 관리하지 않고 있었기에, 64비트 클라이언트로 전환하기 위해선 64비트 빌드 에러를 가장 먼저 해결해야 했습니다. 이 과정에서 기억에 남는 문제와 해결 방법을 몇 가지 소개 드리고자 합니다.
`C1128` 에러
디버그 빌드에서 가장 먼저 맞닥뜨린 에러였습니다. msdn 문서를 살펴보니 코드 컴파일 후 생성되는 각 obj 파일마다 최대 2^16(65,279) 만큼의 섹션 개수를 지정할 수 있도록 제한되어 있어, obj 파일에 기록 가능한 최대 섹션 수를 초과하면 C1128 빌드 에러가 발생하는 것입니다.발생했던 원인은 복합적인데요. 디버그 빌드는 /Gy 옵션을 사용 중이었고, x64에는 pdata라는 섹션을 추가로 기록하기 때문에 몇몇 코드 양이 많은 cpp 파일에서 발생했습니다. 이에 `/bigobj` 빌드 옵션을 추가해 obj 파일에서 사용하는 섹션 수를 2^32(약 42억개) 만큼 늘려서 문제를 해결했습니다.
얘네 보면 파일 하나가 만줄이랬나 그랬더만
https://blog.maplestory.nexon.com/%EB%A9%94%EC%9D%B4%ED%94%8C%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%9D%98-64%EB%B9%84%ED%8A%B8-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EB%8F%84%EC%9E%85-%EC%97%AC%EC%A0%95/
아니 복사생성자 이슈는 쪽팔려서라도 뺄거같은데 ㅋㅋㅋㅋ 그리고 저렇게 큰 프로젝트면 그냥 stl안써야될거같은데 걍 쓰는구나 - dc App
걍 문서쓸거없어서 쓴듯
큰 프로젝트랑 STL이랑 상관있어? 대형 플젝이면 부적합해?
성능 타이트하게 최적화하려고 보통 대규모 프로젝트에서는 자체적인 stl 라이브러리를 만드는 겅우도 있음 대표적인 경우가 EA의 STL
자기가 만든게 아니니까 넣었겠지. 저 코드를 만진 사람이 최소 수백명일텐데, 얼치기가 많은게 당연함