2011-03-23 3 views
1

발견 된 라이브러리가 정적 라이브러리인지 확인하는 방법이 있습니까? 라이브러리를 찾기 위해 나는이 작업을 수행 : 라이브러리가 정적 인 경우 cmake 검사

IF(WIN32) 
    SET(CMAKE_FIND_LIBRARY_SUFFIXES .lib) 
ELSE() 
    SET(CMAKE_FIND_LIBRARY_SUFFIXES .a) 
ENDIF() 
find_library(QUANTLIB_LIBRARY NAMES QuantLib PATHS ${QUANTLIB_LIBRARY_SEARCH}) 

그러나 .lib이 DLL에 대한 기호 파일이 될 수 창에

. 이 라이브러리가 실제로 정적 인 형식인지 확인해야합니다. 그렇지 않으면 나중에 링크하면 이해하기 어려운 오류 메시지가 나타납니다. 당신이 궁금해하는 경우


, 나는 정말 satic 라이브러리를 사용하지 않지만, QuantLib는 멀티 스레딩 및 공유 라이브러리에 대한 나뉩니다. 이것이 올바르게 작동하는 가장 좋은 기회입니다 : 공유 라이브러리 중 하나에 정적으로 링크하십시오.

답변

0

여기에는 cmake- 방법이 없습니다. 대부분의 find_package 스크립트는 파일 이름에서 파생됩니다 : 많은 라이브러리가 사전 또는 사후 수정을 사용하여 정적 라이브러리를 구별합니다.

해결 방법으로 도구 덤프 도구를 실행하고 함수가 내보내 졌는지 확인할 수 있습니다.

dumpbin /exports QuantLib.lib 

이렇게하면 내보내기가 길어지기 때문에 dll 일 가능성이 높습니다. 그렇지 않으면 정적 라이브러리입니다.

관련 문제