未定义的符号:_ZTIN5boost7archive6detail14basic_oarchiveE

时间:2015-02-02 02:31:30

标签: c++

我遇到了这个问题,无法为c ++加载插件。 这是一个提升lib的错误吗?

这是我的代码:

template <typename T>
bool enSerialize(const T& data, const std::string& filename) {
    std::ofstream ofs(filename.c_str(), std::ios::out);
    if (!ofs.is_open()) {
    return false;
    }
    else {
        boost::archive::text_oarchive oa(ofs);
        oa << data;
    }
    ofs.close();
    return true;
}

我通过

打电话给我
enSerialize(int(2), "test.txt");

2 个答案:

答案 0 :(得分:0)

Etheranger是对的。 我忘了链接到序列化... (这个愚蠢的错误怎么可能发生......)

如果遇到同样的问题, 在cmakelists.txt中包含以下代码

find_package(Boost 1.47.0 REQUIRED COMPONENTS serialization system)
include_directories(${Boost_INCLUDE_DIRS})
target_link_libraries(${libname} ${Boost_LIBRARIES})

非常感谢! Etheranger。

答案 1 :(得分:0)

对于使用SCons的任何人,请添加:

env.Append(LINKFLAGS = ['-lboost_serialization', '-lboost_system'])

为我解决了这个问题。