아직도 윈도우 라이브러리에 대해 명확히 알지 못하고 있던 자신을 반성하며
압축 해제를 위해서 무료이며 가장 범용적인 zlib 라이브러리를 가져다 쓰기로 했다
리눅스, 윈도우 모두 사용 가능 하기에 크로스컴파일 상황에서 딱 맞았다
가장 최신소스를 내려받아서 visual studio 2022로 열어 빌드하였다(CMakefile 사용)
out폴더 경로엔 lib파일 h파일 dll파일 모두 생성이 되었다
(wsl을 이용하여 우분투에서도 빌드해 본 결과 so파일과 a파일이 정상적으로 생성)
나는 정적라이브러리를 사용할 계획이었기에 해더 파일과 lib파일을 복사했고 cmake에서 링크하기 위해 애썼다
결과적으로 링크 한 CMakeList.txt (디버깅 모드로 빌드했기에 이름뒤에 d가 붙어있다)
target_link_directories([프로젝트명]
PRIVATE
${CMAKE_SOURCE_DIR}/external/zlib
)
target_link_libraries([프로젝트명]
PRIVATE
zlibd
)
external/zlib경로에는 zlib.h와 zlibd.lib 파일 존재
많은 구글링으로 다른 CMake와 비교해보며 다 잡아줬는데 최종적으로 분명 파일은 찾아서 링크하는 거 같은데 막상 해당 lib를 포함시킨 exe를 실행 시 에러가 발생했다
환장할 노릇이였다 LIB파일을 분명 확장자도 붙여서 호출했는데 왜 DLL을 찾는지..?
알고 보니 이 LIB는 동적(공유) 라이브러리 빌드시 생성된 파일이고 DLL을 호출할 때 묵시적링크(Implicit Linking)에 사용되는 파일이란 걸 알게 되었다...
부라 부랴 zlib의 cmakefile을 까 봤다
zlibstatic이란 이름으로 정적 라이브러리도 함께 빌드하게 되어있었고 폴더를 열어보니..
zlibstaticd.lib이란 파일이 있었다 (이걸 두고 저 위에 zlibd.lib를 가져가서 링크하고 쑈한것...)
파일만 갈아 끼웠고 CMake 쪽에서 잘못한 줄 알고 이것저것 넣었던 것들을 살짝 정리해주니 바로 잘 동작했다
조만간 라이브러리에 대해 다시 한번 정리해서 포스팅해야겠다
'운동하는 개발자 > c++' 카테고리의 다른 글
c++ wstring to string / string to wstring (0) | 2022.10.01 |
---|---|
fatal error LNK2019 getfileversioninfoa /GetFileVersionInfoSizeA 확인할 수 없는 외부 참조 (0) | 2022.08.17 |
error C2143: 구문 오류: ';'이(가) 'namespace' 앞에 없습니다. (0) | 2022.08.07 |
C++ 윈도우 방화벽 설정 / C++ windows firewall (0) | 2022.07.06 |
QT 설치 중 오류(Error during installation process (qt.tools.perl) (0) | 2022.03.23 |