高效图书馆链接问题

时间:2011-03-21 03:44:51

标签: c++ hypertable

我已经在/opt/hypertable/current/中安装了超文本,我运行了一个来自超级...的示例程序。

#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/我将其设置为{{1}}任何人都可以告诉我您收到此错误...

2 个答案:

答案 0 :(得分:0)

构建软件时需要设置两个不同的路径: include 路径和路径。你似乎让他们感到困惑。

包含路径是查找所有.h文件的路径。如果你有一个包含路径问题,它将在编译时(构建每个单独的.o文件时)显示,这就是你所看到的。 “Common / Compat.h:没有这样的文件或目录”意味着您可能错过了包含路径。

库路径是在链接时查找DLL /共享对象文件的路径。如果您有库路径问题,它将在链接时显示(从.o文件创建最终可执行文件时)。你没有达到编译阶段。

所以做LibrarySetPath并设置-l-L是一个链接器/库事物;你想修复包含路径。

最有可能的是,您希望将/opt/hypertable/current/include/添加到包含路径(在Eclipse中)。在GCC命令行中,这将使用-I /opt/hypertable/current/include/完成,而不是-L

答案 1 :(得分:-1)

你想将/ opt / hypertable / current / include / ThriftBroker / gen-cpp添加到包含路径 你还得一起编译/选择/ Hypertable的/当前/包含/ ThriftBroker / GEN-CPP下的CPP文件