2016-10-20 15 views
0

私はlibconfigを使って私の最初の基本プログラムをC++で動かそうとしています。私はg++ testing.cpp -o testingとコンパイルしました。libconfigアーキテクチャx86_64の未定義シンボル

#include <iostream> 
#include <cstdlib> 
#include <libconfig.h++> 

using namespace std; 
using namespace libconfig; 

int main(){ 

    Config cfg; 

    // Read the file. If there is an error, report it and exit. 
    //try 
    //{ 
    cfg.readFile("/tmp/eg-report-hutapp02q-161017-08-26/eg.cfg"); 
    //} 
    /*catch(const FileIOException &fioex) 
    { 
      cerr << "I/O error while reading file." << endl; 
      return(EXIT_FAILURE); 
    } 
    catch(const ParseException &pex) 
    { 
      cerr << "Parse error at " << pex.getFile() << ":" << pex.getLine() 
         << " - " << pex.getError() << std::endl; 
      return(EXIT_FAILURE); 
    }*/ 

    cout << "This compiled" << endl; 

    return 0; 
} 

私はRHEL6上で実行すると、私は次のようなエラー(最初の行のみ)を取得:

testing.cpp:(.text+0x13): undefined reference to ``libconfig::Config::Config()'

私は、Macダーウィンカーネル15.5.0上で実行すると、私はこのエラーを取得します:

Undefined symbols for architecture x86_64: "libconfig::Config::readFile(char const*)", referenced from: _main in testing-59bdf7.o "libconfig::Config::Config()", referenced from: _main in testing-59bdf7.o "libconfig::Config::~Config()", referenced from: _main in testing-59bdf7.o "typeinfo for libconfig::ParseException", referenced from: GCC_except_table0 in testing-59bdf7.o "typeinfo for libconfig::FileIOException", referenced from: GCC_except_table0 in testing-59bdf7.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

これは、ダウンロードlibconfig-1.5.tar.gzファイルから一例に過ぎません。私は、Macでmakefileプロセスを行って、そのエラーを受け取り、次にlibconfig-1.6をインストールして、同じエラーを受けました。私はここに迷っている。どんな助けもありがとうございます。

+0

使用しているコンパイラコマンドを追加できますか?あなたはどんな旗を使っていますか? – ShadowMitia

+0

@ ShadowMitiaコマンドを最初に追加しました。私は単純な 'g ++ testing.cpp -o testing'を使用しました。特殊なフラグはありません。 – TriHard8

答えて

0

実行可能ファイルにライブラリをリンクする必要があります。

documentationに記載されているとおり、-lconfig++をコンパイラフラグに追加すると動作するはずです。

基本的には、必要に応じてプログラムで適切にインポートできるように、ライブラリソース(クラス、関数など)を見つける場所をコンパイラに指示します。

関連する問題