未解析的外部使用 fmt::format 返回 std::wstring

Posted

技术标签:

【中文标题】未解析的外部使用 fmt::format 返回 std::wstring【英文标题】:unresolved external using fmt::format to return std::wstring 【发布时间】:2020-11-25 23:02:55 【问题描述】:

我在 Visual Studio 2019 中使用 fmt 7.1.3。

我获取 fmt src 文件并制作一个静态库。

当我将此库链接到执行以下操作的 exe 项目中时:

std::wstring out = fmt::format(L"Answer ", 42);

它编译但因链接器错误而失败:

未解析的外部符号“类 std::basic_string,类 std::allocator > __cdecl fmt::v7::detail::vformat(类 fmt::v7::basic_string_view,类 fmt::v7::basic_format_args,wchar_t> >)" (??$vformat@_W$0A@@detail@v7@fmt@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@V? $basic_string_view@_W@12@V?$basic_format_args@V?$basic_format_context@V?$buffer_appender@_W@detail@v7@fmt@@_W@v7@fmt@@@12@@Z) 在函数“类 std ::basic_string,class std::allocator > __cdecl fmt::v7::format(wchar_t const (&)[10 ],int &&)"

如果我使用 fmt-6.2.1 中的 src,相同的静态库配置可以正常工作。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

确保在定义此函数的位置包含fmt/format.h。引用the docs:

fmt/format.h:提供编译时格式字符串检查、宽字符串、输出迭代器和用户定义类型支持的完整格式 API

这是godbolt 上的一个工作示例。

【讨论】:

感谢您的帮助。这解决了我的问题。自我提醒:下次使用 RTFM。 @TheArtTrooper,如果答案确实正确,别忘了接受 =)。 错过了。对不起。完成。

以上是关于未解析的外部使用 fmt::format 返回 std::wstring的主要内容,如果未能解决你的问题,请参考以下文章

C++ WDK STL 是不是支持 wchar_t?我得到未解析的外部符号:(

在 Visual Studio 上的 C++ 项目中将 NetCDF(通过 vcpkg 安装)与 CMake 一起使用时未解析的外部符号

使用Boost.Python修复未解析的外部符号

未引用函数的“未解析的外部符号”

如何将非可变参数值传递给 fmt::format?

为啥在使用模板时会出现“未解析的外部符号”错误? [复制]