未定义符号:_ZTIN5boost7archive6detail14basic_oarchiveE 我遇到了这个问题,没有加载一个C++插件。 这是boost库的错误吗

未定义符号:_ZTIN5boost7archive6detail14basic_oarchiveE 我遇到了这个问题,没有加载一个C++插件。 这是boost库的错误吗,c++,C++,这是我的密码: 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::te

这是我的密码:

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;
}
愤怒是对的。 我忘了链接到序列化。。。 (这愚蠢的错误怎么会发生…)

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

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

非常感谢!以太愤怒。

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

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

为我解决了这个问题。

是否按照文档中的描述链接boost序列化库?发布你的链接器标志。我想我链接正确。我写了几个插件。其他的序列化代码运行良好。如果你想看到连接到boost的链接。。。set(boost_packages system filesystem program_options regex signals thread iostreams date_time)find_packages(boost 1.36.0必需组件${boost_packages})include_目录(${boost_include_DIRS})link_目录(${boost_LIBRARY_DIRS})我不知道语法来自哪个构建系统。。。但是我猜你的
boost\u包
行应该包括
序列化
env.Append(LINKFLAGS = ['-lboost_serialization', '-lboost_system'])