다른 .c 파일 (p1)의 함수를 사용하는 .c 파일 (이 파일 (p2)이라고 부름)을 컴파일하려고합니다. 모든 함수가 정의 된 (p1)에 대한 헤더 파일을 만들었습니다.
이 헤더 파일은 (p2)에 포함되어 있으며 CMakeLists.txt에 다음 줄을 추가했습니다.
# A2
set(SOURCES_A2
src/p2.c
src/p1.h)
add_executable(p2 ${SOURCES_A2})
내가 컴파일 할 때 make p2
내가 얻을 message undefined reference to 'function'
곳 function
(P1)에서 함수이다. CMake 파일에 더 많은 것을 추가하는 것을 잊었습니까?
도움을 주시면 감사하겠습니다. 코드가 필요하면 그렇게 말씀해주세요.
인사말
정의되지 않은 참조는 링커가 어디에서도 함수를 찾을 수 없음을 의미합니다. 이것은 일반적으로 현재있는 개체 파일을 지정하는 것을 잊었 음을 의미합니다. gcc를 사용하여이 문제를 해결하는 방법의 예입니다.
gcc -c -o p1.o p1.c
gcc -c -o p2.o p2.c
gcc -o program p1.o p2.o
첫 번째 단계는 p1.c를 객체 파일로 컴파일하고 아직 링크하지 않습니다 (-c). 두 번째 단계도 마찬가지지만 대신 p2.c를 컴파일합니다. 마지막 단계는 생성 된 개체 파일을 함께 연결하고 최종 프로그램을 생성합니다.
귀하의 경우 소스에 src / p1.c를 추가하여 make 명령에 이것을 추가 할 수 있습니다. 추가하는 것을 잊은 것 같습니다.
set(SOURCES_A2
src/p2.c
src/p1.h
src/p1.c)
add_executable(p2 ${SOURCES_A2})
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다