ld.exe : DWARF 오류 : 오프셋 101cee에서 변수 사양을 찾을 수 없습니다.
Aug 20 2020
다음 메시지와 함께 대량 출력이 표시됩니다 (16 진수 주소로만 구분됨).
ld.exe: DWARF error: could not find variable specification at offset 101cee
일반적으로이 오류의 의미는 무엇입니까?
릴리스 빌드를 컴파일 할 때는 발생하지 않습니다. 디버그 빌드 만.
답변
3 Chameleon Aug 20 2020 at 18:24
기본적으로 방금 해결책을 찾았습니다. StackOverflow에서 그러한 질문을 찾지 못했기 때문에 여기에 배치합니다. 제 입장이 틀렸다면 대답 해주세요.
라이브러리를 정적 라이브러리로 컴파일하지만 올바른 #define
지시문이 없으면 내 보낸 모든 함수에 __declspec(dllexport)
접두사 가 붙습니다. 그래서 함수명 function
은 __imp_function
.
그래서 그것은 단지 undefined reference to __imp_function
.
하지만 왜 그렇게 암호화되어 있습니까? 그리고 릴리스 빌드가 올바르게 컴파일 된 이유는 무엇입니까?
-flto
링크 시간 최적화를 수행하고 라이브러리의 모든 코드를 .a 파일 안에 보관하는 옵션 때문에 이런 일이 발생한다고 생각 하므로 참조가 필요하지 않습니다 (실패하지 않음).