이전에는 객체와 라이브러리가 연결 단계에서 g ++에 전달 된 순서가 중요하지 않다고 항상 생각했습니다. 그런 다음 오늘은 C++ 코드에서 C 코드로 링크하려고했습니다. extern "C"블록에있는 모든 C 헤더를 래핑했지만 링커는 C 오브젝트 아카이브에있는 심볼을 찾는 데 어려움이있었습니다.g ++ c 코드를 C++ 코드에 연결할 때 순서 종속성을 사용합니다.
Perplexed, 난 연결 오류를 분리하는 비교적 간단한 예제를 만들었지 만, 놀랍게도, 어떤 문제없이 링크 된 간단한 예제입니다.
약간의 시행 착오 끝에 간단한 예제에서 사용한 연결 패턴을 에뮬레이션하여 주 코드가 정상적으로 연결될 수 있음을 알았습니다. 패턴은 오브젝트 코드는 첫 번째, 두 번째 예를 들어, 아카이브 오브젝트되었다
g++ -o serverCpp serverCpp.o algoC.o libcrypto.a
사람이 그렇게 할 이유에 도움이 되거 수를? 나는 일반적인 C++ 코드를 링크 할 때이 문제를 본 적이 없다.
자세한 내용은 다음을 참조하십시오. http://stackoverflow.com/questions/1095298/gcc-c-linker-errors-undefined-reference -to-vtable-for-xxx-undefined-referencing/1095321 # 1095321 –