이번 글은 질문은 아니고 저같은 에러를 만날 분들을 위해서 팁을 드리려고 작성했습니다.
protobuf 버전이 영상찍을 때보다 높아져서 그런지 cmake로 protobuf.sln 을 만들고 나서 빌드 돌리면 libprotobuf-lite 였던가 하는 프로젝트에서 LNK2019 에러가 12/13개 혹은 34/35개 정도 빵 뜨면서 빌드 오류가 발생합니다.
이거 뭐 어떡해야되지 하면서 한시간 정도 여기저기서 구글링해본 결과,
https://github.com/bincrafters/community/issues/1008
protobuf.sln을 빌드하면서 뱉는 오류 목록과 여기 링크에서 나오는 에러 로그와 상당히 유사하게 생겼는데, 해당 케이스의 경우 빌드 결과로 나오는 파일들 자체는 문제가 없으니 에러를 쌩까고 그냥 사용해도 된다고 해서 저도 그냥 에러가 뜨던 말던 일단 디버그로 다시 빌드하고, 릴리즈로도 다시 빌드한 뒤에 나오는 결과물들을 강의영상대로 똑같이 붙여넣어봤습니다.
일단 이렇게 불안불안하게 강의를 따라가면서 코드는 작성했는데, 결과적으로는 protobuf로 패킷 주고받는 것에는 성공했습니다. 좀 깊게 들어가면 빌드 에러로 인해 발생할 수 있는 잠재적인 위험요소들이 있을수도 있지만(잘 모르겠어요 있는지 없는지..ㅜ), 지금 당장 사용하기에는 아무런 문제가 없습니다..!
문제가 일어나면 빌드할 때
BUILD_PROTOC_BINARIES
BUILD_SHARED_LIBS를 다 제거하고 빌드해보시기 바랍니다.
(proto 라이브러리를 강의 후반부에 다시 빌드했습니다)
답글
G General
2021.06.26이게 또 버전이 다른 모양인지, 바이너리와 shared_libs 제거하고 나서 빌드되는 솔루션을 다시 빌드해보면 .lib .pdb파일이 나오는게 아니라 libprotobufd.lib, libprotobufd-lite.lib로 나와서 살짝 당황스러울 수도 있습니다. 그리고 올려주신 채팅실습 소스코드의 .lib .pdb 파일을 그대로 옮겼는데 링킹 에러가 또 나더라구요
그래서 채팅실습 소스코드에서 받아온 .lib .pdb파일들을 싹다 제거하고 솔루션 빌드 결과물인 libprotobufd.lib, libprotobufd-lite.lib 두 개를 넣어줘봤는데 잘 작동합니다! dll들은 다 지워도 되구요
이거 뭐 버전이 다를 때마다 뭐가 계속 달라져서 까다롭네요ㅠ