(ACE_TAO) 라이브러리에서 .h 및 .cpp 파일을 참조하는 C++ 프로젝트가 있습니다. (http://www.theaceorb.com/)Eclipse C++ 외부 라이브러리 참조 (ACE + TAO)
프로젝트 GCC C++ 컴파일러와 GCC C++ 링커에 대한 라이브러리 경로가 포함되었습니다.
그러나 프로젝트를 빌드 할 때 오류가 계속 발생합니다.
undefined reference to ACE_Message_Block::~ACE_Message_Block()
| line 627 external location /home/user/Documents/ACE_wrappers/ace/CDR_Stream.inl
undefined reference to CORBA::ORB~ORB();
| line 45 external location /home/user/Documents/ACE_wrappers/Tao/tao/ORB.inl
여기
#ifndef MESSENGERSERVER_H_
#define MESSENGERSERVER_H_
#include <tao/ORB.h> // this is causing the error
class MessengerServer {
public:
MessengerServer();
virtual ~MessengerServer();
private:
CORBA::ORB_var orb; // this is causing the error
1) 나는 올바른 헤더 파일과 일식을 포함 한 헤더 파일을 확인할 수 있습니다 내 자신의 프로젝트 헤더 파일, 그래서이 내 라이브러리 경로가 정확하다는 것을 의미한다 권리?
2) 내 라이브러리 경로가 올바른 경우 Eclipse가 두 가지 방법의 구현을 위해 .cpp 파일에 연결할 수없는 이유는 무엇입니까? 내 .h 파일과 .cpp 파일은 같은 폴더 디렉터리에 있습니다.
3) 나는 라이브러리 경로에 .o 파일이 없기 때문에 'make'를 실행하고 같은 디렉토리에서 .o 파일을 생성했기 때문에 그럴 수 있다고 생각했지만 여전히 같은 오류가 발생합니다. .
뭔가 누락되었거나 오해가 있습니까? 미리 감사드립니다.
업데이트 : 여기 내 프로젝트에게 연결이 실패
g++ -I/home/user/Documents/ACE_wrappers/TAO/
-I/home/user/Documents/ACE_wrappers/ace/
-I/home/user/Documents/ACE_wrappers/
-O0- g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"myMain.d" -MT"myMain.d" -o"myMain.o" "../myMain.cpp"
Finished Building:../MyMain.cpp
g++ -I/home/user/Documents/ACE_wrappers/TAO/
-I/home/user/Documents/ACE_wrappers/ace/
-I/home/user/Documents/ACE_wrappers/
-O0- g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"MyServer.d" -MT"MyServer.d" -o"MyServer.o" "../MyServer.cpp"
Finished Building:../MyServer.cpp
g++ -L/home/user/Documents/ACE_wrappers/TAO/
-L/home/user/Documents/ACE_wrappers/ace/
-L/home/user/Documents/ACE_wrappers/
-o "TAOServer" ./myMain.o ./MyServer.o
./MyMain.o: In function 'ACE_InputCDR:~ACE_InputCDR()':
/home/user/Documents/ACE_wrappers/ace/CDR_Stream.inl:627: undefined reference to ACE_Message_Block::~ACE_Message_Block()
./MyServer.o: In function 'CORBA::ORB:decr_refcount()':
/home/user/Documents/ACE_wrappers/Tao/tao/ORB.inl:45: undefined reference to CORBA::ORB~ORB();
/home/user/Documents/ACE_wrappers/ace/및/home/user/Documents/ACE_wrappers/Tao/tao /에서 소스 파일을 컴파일하고 내 라이브러리 경로에이 두 파일을 추가했습니다. ACE_Message_Block 및 ORB에 대해 .o 객체를 볼 수 있습니다. 하지만 여전히 동일한 오류가 발생했습니다 –
또한 명령 줄에서 라이브러리를 지정했는지 확인하십시오. 여기를 참조하십시오 : http://stackoverflow.com/questions/22426574/gcc-undefined-reference-to. 이름과 경로로 라이브러리를 지정하지 않으면 전체 경로 인 라이브러리 자체도 명령 줄에 포함되도록하십시오 (모든 .o 파일). 또한이 문제를 일으키는 두 개의 .inl 파일을 살펴볼 수도 있습니다. 연결 설정이 올바른 경우 네임 스페이스 문제 일 수 있습니다.이 경우 클래스를 검색하는 데 사용되는 네임 스페이스가 올바른 네임 스페이스와 일치하지 않습니다. –
gcc 명령 행을 게시해야 할 수도 있습니다. 하나의 큰 명령 행 또는 여러 개의 컴파일 및/또는 링크 명령 행이있을 수 있습니다. –