2014-10-04 1 views
-2

cubietruck의 gpio_lib로 작업하려고합니다. 그러므로 나는 내 작업 디렉토리에있는 gpio_lib.h (https://github.com/youyudehexie/node-cubieboard-gpio/blob/master/lib/gpio_lib.h 참조) 파일을 가지고 : 나는 다음과 같은 한 내 test.cpp에서C++에서 헤더 파일을 컴파일하고 링크하는 방법은 무엇입니까?

> l 
gpio_lib.h 
test.cpp 

은 다음과 같습니다

#include "gpio_lib.h" 

sunxi_gpio_initsunxi_gpio_output 같은 gpio_lib의 일부 기능 통화 main() 함수 내에서.

> g++ -o test -O3 -Wall gpio_lib.h test.cpp 
> g++ -o test -O3 -Wall -I. -L. gpio_lib.h test.cpp 

: 나는

> g++ -o test -O3 -Wall test.cpp 

를 통해 send.cpp를 컴파일 및 링크하려고하면

그러나 나는 또한 동일한 오류가 전화를 다음 시도

/tmp/ccULAi2f.o: In function `sequence_up()': 
test.cpp:(.text+0x26a): undefined reference to `sunxi_gpio_output(unsigned int, unsigned int)' 
/tmp/ccULAi2f.o:test.cpp:(.text.startup+0xa2): more undefined references to `sunxi_gpio_output(unsigned int, unsigned int)' follow 
collect2: error: ld returned 1 exit status 

를 얻을 수 test.cpp을 컴파일하고 연결하는 올바른 방법은 무엇입니까?

+0

당신이 필요 gpio 라이브러리도 링크하십시오. – Ashalynd

+0

질문은 : 어떻게? – phortx

+0

프로젝트에 gpio_lib.c 파일을 적어도 추가하십시오. -} – Ashalynd

답변

4

컴파일과 올바른 라이브러리와 링크를 찾아 연결해야합니다 C++에서 : 당신은 아마 일부 기능 선언을 가져왔다 #include "gpio_lib.h" 헤더를 포함하여

extern "C" { 
#include "gpio_lib.h" 
} 
+0

@OP; 이 게시 시점의 유일한 정답입니다. – Brandon

+0

맞습니다. 정답입니다. 고맙습니다. – phortx

2

헤더 파일과 연결할 수 없습니다. 얻는 오류는 연결 오류입니다. 즉, .h 파일에서 함수 선언을 사용할 수 있으므로 컴파일 될 수 있지만 함수 정의가 누락되었습니다. 헤더, 당신은 당신이 그것을 포함하는 경우 언어 연결을 직접 추가하는 순수 C를해야하기 때문에 사용자는 해당 소스 파일을

g++ -o test test.cpp gpio_lib.c 

을 그

2

. 헤더가 C에 있기 때문에 당신은 적절한 연결을 제공하기 위해 #include 정의

extern "C" { 
    #include "gpio_lib.h" 
} 

전에 연결 지정자를 추가해야합니다. 그럼 당신은 연결해야뿐만 아니라 이러한 기능의 정의 (몸) 또는 당신을 위해 모든 일을 할 (g의 ++ gcc가 모듈) GCC의 요청 바이너리에 :

g++ -o test test.cpp gpio_lib.c 
관련 문제