gpt4 book ai didi

c++ - Boost 文件系统库中无法解析的外部符号(错误 LNK2019)

转载 作者:搜寻专家 更新时间:2023-10-31 02:17:02 25 4
gpt4 key购买 nike

我正在尝试调试链接错误 LNK2019:未解析的外部符号。为此,我试图列出库中应该包含该符号的所有符号。但是,我有两个问题:

1) 首先,我对如何阅读这种形式的 demangled 符号感到困惑:

type __cdecl <SYMBOL_NAME> (<X>)

具体来说,我想知道 X 的含义是什么,它的重要性是什么?另外,交换 SYMBOL_NAMEX 会导致链接错误吗?

例如,这里是库中符号的一个(经过整理的)定义:

void __cdecl boost::filesystem::path_traits::convert(char const * __ptr64,char const * __ptr64,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > & __ptr64,class std::codecvt<wchar_t,char,int> const & __ptr64) (void __cdecl boost::filesystem::path_traits::convert(char const *,char const *,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > &,class std::codecvt<wchar_t,char,int> const &))

这是链接错误:

error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl boost::filesystem3::path_traits::convert(char const *,char const *,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > &,class std::codecvt<wchar_t,char,int> const &)" (__imp_void __cdecl boost::filesystem3::path_traits::convert(char const * __ptr64,char const * __ptr64,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > & __ptr64,class std::codecvt<wchar_t,char,int> const & __ptr64) referenced in function "public: __cdecl boost::filesystem3::path::path<char const [4]>(char const (&)[4],void *)" (??$?0$$BY03$$CBD@path@filesystem3@boost@@QEAA@AEAY03$$CBDPEAX@Z)

您可以看到未解析的符号和现有符号的 SYMBOL_NAMEX 交换了。

2) 是否有人对如何解决上面列出的错误有任何想法?

任何帮助将不胜感激!

最佳答案

您链接的 boost dll 和您编译的 boost 头文件之间似乎有些不匹配。也就是说,您的头文件定义了一个 filesystem3 命名空间,dll 中没有符号。

根据Boost.FileSystem docs ,最有可能的情况是您的 header 来自 boost 版本 1.46 或 1.47,其中文件系统 v2 和 v3 均受支持,但默认为 v3,而您的 dll 适用于 boost 1.48 或更高版本,此时不再包含 v2 并且v3 是默认值(没有专用的 filesystem3 命名空间)。

关于c++ - Boost 文件系统库中无法解析的外部符号(错误 LNK2019),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36211108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com