C++ プロジェクトで GNU C ライブラリの正規表現機能を使用しようとしています。特に、regex_t regcomp、regexec、regfree 関数を使用しようとしています。コンパイル時に、これらのシンボルが未定義であることを示すエラーが表示されます。
me> g++ -I/me/myheaders/ -c RootGenerator.cpp -o RootGenerator.o -std=gnu++0x -Wall
RootGenerator.cpp: In function ‘std::string findFirstFileInCurrentDirectory(std::string)’:
RootGenerator.cpp:1072: error: ‘regex_t’ was not declared in this scope
RootGenerator.cpp:1072: error: expected ‘;’ before ‘re’
RootGenerator.cpp:1073: error: ‘re’ was not declared in this scope
RootGenerator.cpp:1073: error: ‘REG_EXTENDED’ was not declared in this scope
RootGenerator.cpp:1073: error: ‘REG_NOSUB’ was not declared in this scope
RootGenerator.cpp:1073: error: ‘regcomp’ was not declared in this scope
RootGenerator.cpp:1074: error: expected ‘;’ before ‘int’
RootGenerator.cpp:1084: error: ‘status’ was not declared in this scope
RootGenerator.cpp:1084: error: ‘regexec’ was not declared in this scope
RootGenerator.cpp:1092: error: ‘REG_NOMATCH’ was not declared in this scope
RootGenerator.cpp:1108: error: ‘regfree’ was not declared in this scope
正規表現ヘッダーは TR1 実装であるため、私のバージョンの GCC では実験的であることがわかりました。-std=gnu++0x
最初にコンパイルしようとしたときに受け取ったコンパイラの警告に従ってコンパイラ オプションを追加しましたが、これで問題が解決するようには見えません。これは、システムが「実験的」ヘッダーへのパスを認識して追加しないという問題ですか? 指定する必要がある追加のインクルード パスまたはコンパイラ オプションはありますか?
追加のメモとして、Eclipse/CDT で、Project Explorer ビューの「includes」タブの下に、システム ヘッダー パスのリストが表示されていることに気付きました。/user/include/c++/4.4.4 パス タブの下に多くのヘッダー ファイルが一覧表示されますが、正規表現ヘッダーは一覧表示されません。これも設定の問題があることを再認識させていると思います。