【问题标题】:Error using boost::filesystem使用 boost::filesystem 时出错
【发布时间】:2015-01-22 14:38:56
【问题描述】:

我正在尝试将所有 .txt 文件读取到给定文件夹中,并且我正在尝试为此使用 Boost 库:

int FileLoad::ReadTxtFiles(const std::string folder){
    int loadStatus = LOAD_OK;

    // Check if given folder exists
    if(boost::filesystem::is_directory(folder)){
        // Iterate existing text files
        boost::filesystem::directory_iterator end_iter;
        for(boost::filesystem::directory_iterator dir_itr(folder);
            dir_itr!=end_iter; dir_itr++){

            boost::filesystem::path filePath;
            try{
                // Check if it is a file
                if(boost::filesystem::is_regular_file(dir_itr->status())){
                    filePath = dir_itr->path();
                    // Check that it is .txt extension
                    std::string fileExtension =
                        dir_itr->path().extension().string(); // Case insensitive comparison
                    if(boost::iequals(fileExtension, ".txt")){
                        // Filename is the code used as id when the file text is loaded to a database
                        std::string fileName = dir_itr->path().stem().string();
                        std::istringstream is(fileName);
                        unsigned int entryId;
                        is >> entryId;
                        // Check if an entry with that code id currently exists
                        // at the database
                        if(!DATABASE::CheckIfEntryExists(entryId)){
                            // Process text file
                            loadStatus = ProcessFile(filePath.string());
                        }
                    }
                }
            }
            catch(const std::exception& ex){
                std::cerr << " [FILE]  Error trying to open file " <<
                    filePath.string() << std::endl;
            }
        }
    }

    return loadStatus;
}

但我收到两个编译器错误:

undefined reference to `boost::filesystem3::path::extension() const'
undefined reference to `boost::filesystem3::path::stem() const'

我在类头文件中有以下导入:

#include "boost/algorithm/string.hpp"
#include "boost/filesystem/operations.hpp"
#include "boost/filesystem/path.hpp"

(以及其他不相关的,例如)

我做错了什么?

【问题讨论】:

    标签: c++ boost c++03 boost-filesystem


    【解决方案1】:

    您必须与-lboost_filesystem -lboost_system 链接,以解决这些链接器错误

    Boost 文件系统依赖于这些库中可用的其他已编译组件

    【讨论】:

      【解决方案2】:

      这些是链接器错误,而不是编译器错误。请链接 boost 文件系统库和系统库,b/c 文件系统依赖它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-18
        • 2011-02-15
        • 1970-01-01
        相关资源
        最近更新 更多