我不能在C ++上使用fmt库头 [英] I can't use fmt library headers on c++

查看:505
本文介绍了我不能在C ++上使用fmt库头的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经下载,构建并将c ++上的{fmt} 6.2.1库添加到项目中.我正在使用Windows.

I've downloaded, built and added to the project the {fmt} 6.2.1 library on c++. I'm using Windows.

问题是,可以识别标头(代码:块为我自动完成了标头),但是我尝试使用的任何功能均会导致错误.

Problem is, the headers are recognized(Code:Blocks give me the auto-completion for them) but any function I try to use results in errors.

例如此代码:

#include <iostream>
#include<fmt-6.1.2/include/fmt/core.h>
#include<fmt-6.1.2/include/fmt/format.h>

int main()
{
    auto msg1 = fmt::format("The answer is {}", 42);
    return 0;
}

产生此错误

||=== Build: Debug in test libreria fmt (compiler: GNU GCC Compiler) ===|
obj\Debug\main.o||In function `ZN3fmt2v68internal16is_integral_typeENS1_4typeE':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\core.h|736|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal18is_arithmetic_typeENS1_4typeE':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\core.h|741|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v612format_errorC1EPKc':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|693|undefined reference to `vtable for fmt::v6::format_error'|
obj\Debug\main.o||In function `ZN3fmt2v68internal12count_digitsEy':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|751|undefined reference to `fmt::v6::internal::basic_data<void>::zero_or_powers_of_10_64'|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|751|undefined reference to `fmt::v6::internal::basic_data<void>::zero_or_powers_of_10_64'|
obj\Debug\main.o||In function `ZN3fmt2v68internal12count_digitsEj':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|809|undefined reference to `fmt::v6::internal::basic_data<void>::zero_or_powers_of_10_32'|
obj\Debug\main.o||In function `ZN3fmt2v68internal11to_unsignedIiEENSt13make_unsignedIT_E4typeES4_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\core.h|266|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZZN3fmt2v68internal19parse_format_stringILb0EcRNS0_14format_handlerINS0_13arg_formatterINS0_12buffer_rangeIcEEEEcNS0_20basic_format_contextISt20back_insert_iteratorINS1_6bufferIcEEEcEEEEEEvNS0_17basic_string_viewIT0_EEOT1_EN10pfs_writerclEPKcSN_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|2510|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal19parse_format_stringILb0EcRNS0_14format_handlerINS0_13arg_formatterINS0_12buffer_rangeIcEEEEcNS0_20basic_format_contextISt20back_insert_iteratorINS1_6bufferIcEEEcEEEEEEvNS0_17basic_string_viewIT0_EEOT1_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|2527|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|2541|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|2543|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal12parse_arg_idIcNS1_10id_adapterIRNS0_14format_handlerINS0_13arg_formatterINS0_12buffer_rangeIcEEEEcNS0_20basic_format_contextISt20back_insert_iteratorINS1_6bufferIcEEEcEEEEcEEEEPKT_SK_SK_OT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|2278|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v614format_handlerINS0_13arg_formatterINS0_12buffer_rangeIcEEEEcNS0_20basic_format_contextISt20back_insert_iteratorINS0_8internal6bufferIcEEEcEEE15on_format_specsEPKcSF_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|3133|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v616visit_format_argINS0_13arg_formatterINS0_12buffer_rangeIcEEEENS0_20basic_format_contextISt20back_insert_iteratorINS0_8internal6bufferIcEEEcEEEEDTclfp_Li0EEEOT_RKNS0_16basic_format_argIT0_EE':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\core.h|1012|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal21parse_nonnegative_intIcRNS1_10id_adapterIRNS0_14format_handlerINS0_13arg_formatterINS0_12buffer_rangeIcEEEEcNS0_20basic_format_contextISt20back_insert_iteratorINS1_6bufferIcEEEcEEEEcEEEEiRPKT_SL_OT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1928|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal10id_adapterIRNS0_14format_handlerINS0_13arg_formatterINS0_12buffer_rangeIcEEEEcNS0_20basic_format_contextISt20back_insert_iteratorINS1_6bufferIcEEEcEEEEcE8on_errorEPKc':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|2493|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v616visit_format_argIRNS0_8internal16custom_formatterINS0_20basic_format_contextISt20back_insert_iteratorINS2_6bufferIcEEEcEEEES9_EEDTclfp_Li0EEEOT_RKNS0_16basic_format_argIT0_EE':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\core.h|1012|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v626basic_format_parse_contextIcNS0_8internal13error_handlerEE8on_errorEPKc':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\core.h|532|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal18arg_formatter_baseINS0_12buffer_rangeIcEENS1_13error_handlerEEclENS0_9monostateE':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1836|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal11parse_alignIcRNS1_13specs_checkerINS1_13specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEENS0_20basic_format_contextISt20back_insert_iteratorINS1_6bufferIcEEEcEEEEEEEEPKT_SJ_SJ_OT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|2342|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal11parse_widthIcRNS1_13specs_checkerINS1_13specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEENS0_20basic_format_contextISt20back_insert_iteratorINS1_6bufferIcEEEcEEEEEEEEPKT_SJ_SJ_OT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|2382|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v620basic_format_contextISt20back_insert_iteratorINS0_8internal6bufferIcEEEcE8on_errorEPKc':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\core.h|1169|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal17handle_char_specsIcNS1_18arg_formatter_baseINS0_12buffer_rangeIcEENS1_13error_handlerEE17char_spec_handlerEEEvPKNS0_18basic_format_specsIT_EEOT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1280|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeIfLi0EEEvT_NS0_18basic_format_specsIcEE':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1694|undefined reference to `fmt::v6::internal::basic_data<void>::signs'|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1703|undefined reference to `fmt::v6::internal::basic_data<void>::signs'|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1704|undefined reference to `int fmt::v6::internal::snprintf_float<double>(double, int, fmt::v6::internal::float_specs, fmt::v6::internal::buffer<char>&)'|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1713|undefined reference to `int fmt::v6::internal::format_float<double>(double, int, fmt::v6::internal::float_specs, fmt::v6::internal::buffer<char>&)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeIdLi0EEEvT_NS0_18basic_format_specsIcEE':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1694|undefined reference to `fmt::v6::internal::basic_data<void>::signs'|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1703|undefined reference to `fmt::v6::internal::basic_data<void>::signs'|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1704|undefined reference to `int fmt::v6::internal::snprintf_float<double>(double, int, fmt::v6::internal::float_specs, fmt::v6::internal::buffer<char>&)'|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1713|undefined reference to `int fmt::v6::internal::format_float<double>(double, int, fmt::v6::internal::float_specs, fmt::v6::internal::buffer<char>&)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeIeLi0EEEvT_NS0_18basic_format_specsIcEE':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1694|undefined reference to `fmt::v6::internal::basic_data<void>::signs'|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1703|undefined reference to `fmt::v6::internal::basic_data<void>::signs'|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1704|undefined reference to `int fmt::v6::internal::snprintf_float<long double>(long double, int, fmt::v6::internal::float_specs, fmt::v6::internal::buffer<char>&)'|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1713|undefined reference to `int fmt::v6::internal::format_float<long double>(long double, int, fmt::v6::internal::float_specs, fmt::v6::internal::buffer<char>&)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal18arg_formatter_baseINS0_12buffer_rangeIcEENS1_13error_handlerEE5writeEPKc':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1823|undefined reference to `fmt::v6::format_error::~format_error()'|
obj\Debug\main.o||In function `ZN3fmt2v68internal24handle_cstring_type_specIcNS1_18arg_formatter_baseINS0_12buffer_rangeIcEENS1_13error_handlerEE20cstring_spec_handlerEEEvT_OT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1291|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal22check_string_type_specIcNS1_13error_handlerEEEvT_OT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1296|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal23check_pointer_type_specIcNS1_13error_handlerEEEvT_OT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1301|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal21parse_nonnegative_intIcRNS1_13specs_checkerINS1_13specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEENS0_20basic_format_contextISt20back_insert_iteratorINS1_6bufferIcEEEcEEEEEEEEiRPKT_SJ_OT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1928|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal12parse_arg_idIcNS1_13width_adapterIRNS1_13specs_checkerINS1_13specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEENS0_20basic_format_contextISt20back_insert_iteratorINS1_6bufferIcEEEcEEEEEEcEEEEPKT_SL_SL_OT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|2278|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal12parse_arg_idIcNS1_17precision_adapterIRNS1_13specs_checkerINS1_13specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEENS0_20basic_format_contextISt20back_insert_iteratorINS1_6bufferIcEEEcEEEEEEcEEEEPKT_SL_SL_OT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|2278|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal21parse_float_type_specINS1_13error_handlerEcEENS1_11float_specsERKNS0_18basic_format_specsIT0_EEOT_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1268|undefined reference to `fmt::v6::internal::error_handler::on_error(char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal13decimal_pointIcEET_NS1_10locale_refE':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|831|undefined reference to `char fmt::v6::internal::decimal_point_impl<char>(fmt::v6::internal::locale_ref)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal21parse_nonnegative_intIcRNS1_13width_adapterIRNS1_13specs_checkerINS1_13specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEENS0_20basic_format_contextISt20back_insert_iteratorINS1_6bufferIcEEEcEEEEEEcEEEEiRPKT_SM_OT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1928|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal21parse_nonnegative_intIcRNS1_17precision_adapterIRNS1_13specs_checkerINS1_13specs_handlerINS0_26basic_format_parse_contextIcNS1_13error_handlerEEENS0_20basic_format_contextISt20back_insert_iteratorINS1_6bufferIcEEEcEEEEEEcEEEEiRPKT_SM_OT0_':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1928|undefined reference to `fmt::v6::internal::assert_fail(char const*, int, char const*)'|
obj\Debug\main.o||In function `ZN3fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE10int_writerIiNS0_18basic_format_specsIcEEE8on_errorEv':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1590|undefined reference to `fmt::v6::format_error::~format_error()'|
obj\Debug\main.o||In function `ZN3fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE10int_writerIjNS0_18basic_format_specsIcEEE8on_errorEv':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1590|undefined reference to `fmt::v6::format_error::~format_error()'|
obj\Debug\main.o||In function `ZN3fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE10int_writerIxNS0_18basic_format_specsIcEEE8on_errorEv':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1590|undefined reference to `fmt::v6::format_error::~format_error()'|
obj\Debug\main.o||In function `ZN3fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE10int_writerIyNS0_18basic_format_specsIcEEE8on_errorEv':|
D:\CodeBlocks\MinGW\include\fmt-6.1.2\include\fmt\format.h|1590|undefined reference to `fmt::v6::format_error::~format_error()'|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build failed: 50 error(s), 0 warning(s) (0 minute(s), 2 second(s)) ===|

然后编译器在第二行中将我指向core.h的这一部分

and the compiler points me to this section of core.h, in the second line

FMT_CONSTEXPR bool is_integral_type(type t) {
  FMT_ASSERT(t != named_arg_type, "invalid argument type");
  return t > none_type && t <= last_integer_type;
}

这是我第一次使用库,因此在添加库时我可能会犯错. 我遵循的过程是进行项目->构建选项->链接器设置,然后在其中添加.lib文件.

It is the first time for me to use a library so I could have mistaken something while adding it. The procedure I've followed is to go on project->build options->linker settings and there I added the .lib files.

谢谢.

推荐答案

您应链接到fmt库.例如,如果您使用的是CMake,则可以使用 target_link_libraries :

You should link with the fmt library. For example, if you are using CMake it can be done with target_link_libraries:

target_link_libraries(<target> fmt)

这篇关于我不能在C ++上使用fmt库头的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆