Eclipse C++ ссылки на внешнюю библиотеку (ACE + TAO)

У меня есть проект c++, который ссылается на .h and .cpp-файлы из библиотеки (ACE_TAO). (http://www.theaceorb.com/)

Я включил пути библиотеки к компилятору project 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) я включил правильный файл заголовка и eclipse может разрешить файл заголовка, поэтому это должно означать, что мои пути к библиотеке правильные, правильно?

2 )Если мои пути библиотеки верны, почему eclipse не может связать с.cpp файлы для реализации 2 методов? мой. H файл И.cpp файлы находятся в том же каталоге.

3) я думал, что это может быть потому, что у меня нет .o файлы в пути к библиотеке, поэтому я запустил ‘make’ и сгенерировал .o файлы в том же каталоге, но я все равно получаю ту же ошибку.

Я что-то пропустил/неправильно понял? Спасибо заранее.

обновление:
Вот команда Eclipse c++, используемая для построения моего проекта

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();

1 ответ

  1. Связь не работает. Нет, путь «include» определяет, можно ли найти файл заголовка. Путь «библиотека» используется для связывания с объектными или библиотечными файлами. Связь не работает.

    Отсутствующие функции являются деструкторами для классов ACE_Message_Block и ORB. Найдите исходные файлы для них, скомпилируйте их и убедитесь, что скомпилированные объектные файлы находятся на пути к библиотеке проекта.