일부 기능의 경우 다른 정적 라이브러리 libbar에 의존하는 정적 라이브러리 libfoo를 가정하십시오. 이러한 응용 프로그램과 내 응용 프로그램은 D로 작성됩니다. 응용 프로그램이 libfoo를 직접 사용하고 libbar에서 기호를 참조하지 않는 libfoo의 함수 만 호출하는 경우 링커에 libbar를 전달하지 않고 프로그램을 성공적으로 연결하는 경우가 있습니다.사용되지 않는 기능에 대한 링커 오류 : 언제 발생합니까?
어떤 컴파일러가 GCC 툴체인을 사용하여 링크하더라도 libfoo, libbar 및 내 응용 프로그램을 컴파일하는 데 사용하는 컴파일러에 따라 이러한 문제가 발생할 수 있습니다. DMD를 사용하고 있다면 libbar를 링커에 전달하지 않으면 절대로 링커 오류가 발생하지 않습니다. GDC를 사용하는 경우 이해가 안되는 경우가 있기 때문에 때때로 수행합니다. LDC를 사용하고 있다면, 나는 항상 그렇게한다.
libfoo에서 참조 된 기호가 정의되지 않았지만이 기호가 응용 프로그램 개체 파일에서 참조하지 않는 함수에서 발생하면 GCC 링커가 실패할지 여부를 결정하는 것은 무엇입니까?
오른쪽. 기호는 내 응용 프로그램에서 참조되지 않은 장소에서만 참조됩니다. 그래프에 관해서는 응용 프로그램의 코드에서 정의되지 않은 심볼까지의 경로가 없어야합니다. – dsimcha
"경로가 없어야합니다 ...". 그러나 요점은 * 경로가 있다는 것입니다 (또는 링커가 실패하지 않았을 것입니다). * 정확한 * 오류 메시지는 무엇입니까? –