c++ softfloat 써드 파티를 사용해야 하는데
이를 라이브러리로 빌드하여 필요한 모듈에 링킹하는 작업이 필요하다.
그런데.. 계속해서 링킹에러가 발생해서.. 열심히 하던중..
CMake Configuration을 잘못했는지 원본의 make를 제대로 안했는지.. 알 길이 없다.
결국 처음부터 다시 시작해 원본의 makefile과 같도록 헤더와 소스파일을 활용하여
컴파일 및 빌드까지 완료해서 라이브러리를 새로 만들었다.
하지만 다른 모듈과 링킹 에러이다... 해당 기호가 진짜 라이브러리에 없는건가....
이제 라이브러리를 뜯어봐야되는데 어떻게 뜯을 수 있는지 간단히 알아보자.
Visual Studio 2022에서 Cmake 프로젝트를 만들면 간단한 샘플 파일을 얻을 수 있다.
샘플 코드는 아래와 같다.
간단한 클래스가 있고 헤더파일과 소스파일이 있다.
이 두 파일을 컴파일하여 정적 라이브러리로 만들어 아래의 결과물을 만들어 낼수 있다.
이제 이 라이브러리를 dumpbin으로 떠보자.
dumpbin은 VS 개발자 도구 명령 prompt를 사용하면 실행할 수 있다.
아래와 같은 옵션들을 제공한다.
/ALL 옵션으로 하면 너무 많은데
간단한 프로그램으로 덤프를 떠보면 어떤 정보들이 남겨지는지 대강 확인할 수 있다.
이중에 우린 외부 기호가 있는지 보고싶으니 /SYMBOLS를 사용해본다.
dumpbiin [옵션] [라이브러리]
dumpbin /SYMBOLS CMakeProject1.lib
위 그림처럼 일부에 사용된 Extenral 함수 심볼들을 확인할 수 있다.
우리가 클래스로 정의한 4개의 연산 함수와 main함수에서 사용한 iostream 관련 operator을 확인할 수 있다.
외부 기호 에러인 링킹에러를 확인할 때 이같이 라이브러리를 덤프해서 확인해볼 이유가 있다.
'C , C++, C#' 카테고리의 다른 글
[Visual Studio 2022] VS 2022 크로스 플랫폼 빌드: CMakepprest.json (0) | 2022.11.07 |
---|---|
[Visual Studio] LNK2019: unresolved external symbol (0) | 2022.09.08 |
[C++] restrict keyword: AMP(Accelerated Massive Parallelism) (0) | 2022.07.04 |
복잡한 선언 읽기: C / C++ (0) | 2022.06.21 |
[C++] cmd system 함수 / xcopy (0) | 2022.05.30 |