проблема связывания гипертабельной библиотеки - PullRequest
0 голосов
/ 21 марта 2011

я установил hypertable в /opt/hypertable/current/ и запускаю пример программы из hypertable ...

#include <Common/Compat.h>

#include <iostream>
#include <fstream>
#include <string>

#include <Common/System.h>
#include <Common/Error.h>

#include <Hypertable/Lib/Client.h>
#include <Hypertable/Lib/KeySpec.h>

using namespace Hypertable;

int main(int argc, char* argv[]) {
        ClientPtr client_ptr;
        TablePtr table_ptr;
        TableMutatorPtr mutator_ptr;
        KeySpec key;

        const char* install_dir = "/opt/hypertable/current/";

        client_ptr = new Client( System::locate_install_dir(install_dir) );

}

я получил эту ошибку

g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/testes.d" -MT"src/testes.d" -o"src/testes.o" "../src/testes.cpp"
../src/testes.cpp:1: fatal error: Common/Compat.h: No such file or directory

я использовал Eclipse CDT для моегоразработка и я связались, используя проект Properties->c/c++build->setting->Libraries->LibrarySetPath(-L), и я подписал HyperCommon also in -l, это я установил как /opt/hypertable/current/include/ Может кто-нибудь сказать мне, что я получаю эту ошибку ...

Ответы [ 2 ]

0 голосов
/ 16 сентября 2013

вы хотите добавить / opt / hypertable / current / include / ThriftBroker / gen-cpp к пути включения 你 还得 一起 编译 / опт / Hypertable / ток / включить / ThriftBroker / генераторной каст 下 的 каст 文件

0 голосов
/ 21 марта 2011

При создании программного обеспечения необходимо указать два различных пути: путь включает и путь библиотеки .Похоже, вы их путаете.

Путь включения - это путь для поиска всех файлов .h.Если у вас есть проблема с включаемым путем, она проявится во время компиляции (при создании каждого отдельного .o файла), что вы и видите.«Common / Compat.h: нет такого файла или каталога» означает, что вы, вероятно, пропустили путь включения.

Путь к библиотеке - это путь для поиска DLL / общих объектных файлов во время соединения.Если у вас есть проблема с путем к библиотеке, она проявится во время компоновки (при создании конечного исполняемого файла из .o файлов).Вы не дошли до этой стадии компиляции.

То есть выполнение LibrarySetPath и установка -l или -L - это вещь компоновщика / библиотеки;вы хотите исправить путь включения.

Скорее всего, вы хотите добавить /opt/hypertable/current/include/ к пути включения (в Eclipse).В командной строке GCC это будет сделано с -I /opt/hypertable/current/include/, НЕ с -L.

...