0

我使用的是 LLVM GCC 4.2 编译器,但出于某种原因,我想改用 Apple LLVM 编译器。我使用一些静态链接的 boost 库。

我的代码部分在这里:

#include <boost/program_options/detail/config_file.hpp>

std::set<std::string> options;
std::map<std::string, std::string> parameters;
options.insert("*");

for (config_file_iterator i(config, options), e ; i != e; ++i) 
    parameters[i->string_key] = i->value[0];

当我将 Xcode 4.5.1 中的编译器更改为 Apple LLVM 4.1 时,它给了我这个错误:


    在 A.cpp:16 包含的文件中:
    boost_1_46_1/boost/program_options/detail/config_file.hpp:163:17:错误:
    调用模板中不可见的函数“to_internal”
    定义也没有通过依赖于参数的查找找到
        s = to_internal(in);
            ^
    A.cpp:82:39:注意:在成员函数的实例化中
    'boost::program_options::detail::basic_config_file_iterator::getline'
    在这里请求
        for (config_file_iterator i(config, options), e ; i != e; ++i)
                                  ^
    boost_1_46_1/boost/program_options/detail/convert.hpp:70:48:注意:
    'to_internal' 应在调用站点之前声明或
    在命名空间'__gnu_cxx'
BOOST_PROGRAM_OPTIONS_DECL std::string to_internal(const std::string&);

在此处输入图像描述

有人知道解决方案是什么吗?

4

1 回答 1

1

请在 顶部找到detail/config_file.hpp以下行:

#include <boost/program_options/detail/convert.hpp>

并删除#if#endif围绕该线。在那之后一切都应该很好。该修复程序已包含在当前版本中。

于 2012-11-22T19:26:15.207 回答