VS 2019编译不成功
jackgoodman2 opened this issue · 10 comments
安装源设计的cmake文件生成的VS项目在2019版本中无法注册为c++20,编译的时候出现诸多错误。
自己在cmakelist中配置为set c++ 20后,对于例子项目出现编译器内部错误提示,始终无法通过编译,不知是因为只兼容Linux系统么
已启动生成…
1>------ 已启动生成: 项目: ZERO_CHECK, 配置: Debug x64 ------
1>Checking Build System
2>------ 已启动生成: 项目: benchmark, 配置: Debug x64 ------
3>------ 已启动生成: 项目: example, 配置: Debug x64 ------
4>------ 已启动生成: 项目: json_example, 配置: Debug x64 ------
5>------ 已启动生成: 项目: test_json_files, 配置: Debug x64 ------
6>------ 已启动生成: 项目: test_some, 配置: Debug x64 ------
7>------ 已启动生成: 项目: test_ut, 配置: Debug x64 ------
8>------ 已启动生成: 项目: test_xml, 配置: Debug x64 ------
9>------ 已启动生成: 项目: test_yaml, 配置: Debug x64 ------
2>Building Custom Rule C:/Users/Dreamer/Desktop/iguana-master/CMakeLists.txt
3>Building Custom Rule C:/Users/Dreamer/Desktop/iguana-master/CMakeLists.txt
5>Building Custom Rule C:/Users/Dreamer/Desktop/iguana-master/CMakeLists.txt
4>Building Custom Rule C:/Users/Dreamer/Desktop/iguana-master/CMakeLists.txt
2>cl : 命令行 warning D9002: 忽略未知选项“/std:c++20”
2>benchmark.cpp
6>Building Custom Rule C:/Users/Dreamer/Desktop/iguana-master/CMakeLists.txt
7>Building Custom Rule C:/Users/Dreamer/Desktop/iguana-master/CMakeLists.txt
4>cl : 命令行 warning D9002: 忽略未知选项“/std:c++20”
5>cl : 命令行 warning D9002: 忽略未知选项“/std:c++20”
6>cl : 命令行 warning D9002: 忽略未知选项“/std:c++20”
3>cl : 命令行 warning D9002: 忽略未知选项“/std:c++20”
8>Building Custom Rule C:/Users/Dreamer/Desktop/iguana-master/CMakeLists.txt
2>C:\Users\Dreamer\Desktop\iguana-master\iguana\detail\fast_float.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
5>test_json_files.cpp
3>example.cpp
4>json_example.cpp
6>test.cpp
3>C:\Users\Dreamer\Desktop\iguana-master\iguana\detail\fast_float.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
9>Building Custom Rule C:/Users/Dreamer/Desktop/iguana-master/CMakeLists.txt
4>C:\Users\Dreamer\Desktop\iguana-master\iguana\detail\fast_float.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
7>cl : 命令行 warning D9002: 忽略未知选项“/std:c++20”
7>unit_test.cpp
8>cl : 命令行 warning D9002: 忽略未知选项“/std:c++20”
8>test_xml.cpp
7>C:\Users\Dreamer\Desktop\iguana-master\test\unit_test.cpp(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
9>cl : 命令行 warning D9002: 忽略未知选项“/std:c++20”
9>test_yaml.cpp
2>C:\Users\Dreamer\Desktop\iguana-master\iguana\json_util.hpp(196,56): fatal error C1001: 内部编译器错误。
2>(编译器文件“D:\a01_work\26\s\src\vctools\Compiler\CxxFE\sl\p1\c\template.cpp”,第 29342 行)
2> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
2>如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
2>请选择 Visual C++
2>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
3>C:\Users\Dreamer\Desktop\iguana-master\iguana\json_util.hpp(196,56): fatal error C1001: 内部编译器错误。
3>(编译器文件“D:\a01_work\26\s\src\vctools\Compiler\CxxFE\sl\p1\c\template.cpp”,第 29342 行)
3> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
3>如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
3>请选择 Visual C++
3>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
6>C:\Users\Dreamer\Desktop\iguana-master\iguana\detail\fast_float.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
5>C:\Users\Dreamer\Desktop\iguana-master\iguana\detail\fast_float.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
4>C:\Users\Dreamer\Desktop\iguana-master\iguana\json_util.hpp(196,56): fatal error C1001: 内部编译器错误。
4>(编译器文件“D:\a01_work\26\s\src\vctools\Compiler\CxxFE\sl\p1\c\template.cpp”,第 29342 行)
4> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
4>如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
4>请选择 Visual C++
4>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
2>已完成生成项目“benchmark.vcxproj”的操作 - 失败。
3>已完成生成项目“example.vcxproj”的操作 - 失败。
10>------ 已启动生成: 项目: xml_benchmark, 配置: Debug x64 ------
11>------ 已启动生成: 项目: xml_example, 配置: Debug x64 ------
4>已完成生成项目“json_example.vcxproj”的操作 - 失败。
12>------ 已启动生成: 项目: yaml_benchmark, 配置: Debug x64 ------
5>C:\Users\Dreamer\Desktop\iguana-master\iguana\json_util.hpp(196,56): fatal error C1001: 内部编译器错误。
5>(编译器文件“D:\a01_work\26\s\src\vctools\Compiler\CxxFE\sl\p1\c\template.cpp”,第 29342 行)
5> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
5>如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
5>请选择 Visual C++
5>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
7>C:\Users\Dreamer\Desktop\iguana-master\iguana\detail\fast_float.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
10>Building Custom Rule C:/Users/Dreamer/Desktop/iguana-master/CMakeLists.txt
8>C:\Users\Dreamer\Desktop\iguana-master\iguana\detail\fast_float.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
12>Building Custom Rule C:/Users/Dreamer/Desktop/iguana-master/CMakeLists.txt
9>C:\Users\Dreamer\Desktop\iguana-master\iguana\detail\fast_float.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
5>已完成生成项目“test_json_files.vcxproj”的操作 - 失败。
13>------ 已启动生成: 项目: yaml_example, 配置: Debug x64 ------
10>cl : 命令行 warning D9002: 忽略未知选项“/std:c++20”
10>xml_benchmark.cpp
12>cl : 命令行 warning D9002: 忽略未知选项“/std:c++20”
12>yaml_benchmark.cpp
6>C:\Users\Dreamer\Desktop\iguana-master\iguana\json_util.hpp(196,56): fatal error C1001: 内部编译器错误。
6>(编译器文件“D:\a01_work\26\s\src\vctools\Compiler\CxxFE\sl\p1\c\template.cpp”,第 29342 行)
6> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
6>如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
6>请选择 Visual C++
6>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
7>C:\Users\Dreamer\Desktop\iguana-master\iguana\json_util.hpp(196,56): fatal error C1001: 内部编译器错误。
7>(编译器文件“D:\a01_work\26\s\src\vctools\Compiler\CxxFE\sl\p1\c\template.cpp”,第 29342 行)
7> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
7>如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
7>请选择 Visual C++
7>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
7>已完成生成项目“test_ut.vcxproj”的操作 - 失败。
12>C:\Users\Dreamer\Desktop\iguana-master\iguana\detail\fast_float.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
13>Building Custom Rule C:/Users/Dreamer/Desktop/iguana-master/CMakeLists.txt
6>已完成生成项目“test_some.vcxproj”的操作 - 失败。
9>C:\Users\Dreamer\Desktop\iguana-master\iguana\yaml_util.hpp(117,61): fatal error C1001: 内部编译器错误。
9>(编译器文件“D:\a01_work\26\s\src\vctools\Compiler\CxxFE\sl\p1\c\template.cpp”,第 29342 行)
9> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
9>如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
9>请选择 Visual C++
9>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
9>test_yaml_bech.cpp
13>cl : 命令行 warning D9002: 忽略未知选项“/std:c++20”
13>yaml_example.cpp
9>C:\Users\Dreamer\Desktop\iguana-master\iguana\detail\fast_float.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
13>C:\Users\Dreamer\Desktop\iguana-master\iguana\detail\fast_float.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
10>C:\Users\Dreamer\Desktop\iguana-master\iguana\detail\fast_float.h(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
12>C:\Users\Dreamer\Desktop\iguana-master\iguana\yaml_util.hpp(117,61): fatal error C1001: 内部编译器错误。
12>(编译器文件“D:\a01_work\26\s\src\vctools\Compiler\CxxFE\sl\p1\c\template.cpp”,第 29342 行)
12> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
12>如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
12>请选择 Visual C++
12>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
12>已完成生成项目“yaml_benchmark.vcxproj”的操作 - 失败。
9>C:\Users\Dreamer\Desktop\iguana-master\iguana\yaml_util.hpp(117,61): fatal error C1001: 内部编译器错误。
9>(编译器文件“D:\a01_work\26\s\src\vctools\Compiler\CxxFE\sl\p1\c\template.cpp”,第 29342 行)
9> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
9>如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
9>请选择 Visual C++
9>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
9>正在生成代码...
13>C:\Users\Dreamer\Desktop\iguana-master\iguana\yaml_util.hpp(117,61): fatal error C1001: 内部编译器错误。
13>(编译器文件“D:\a01_work\26\s\src\vctools\Compiler\CxxFE\sl\p1\c\template.cpp”,第 29342 行)
9>已完成生成项目“test_yaml.vcxproj”的操作 - 失败。
13> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
13>如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
13>请选择 Visual C++
13>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
13>已完成生成项目“yaml_example.vcxproj”的操作 - 失败。
8>test_xml.vcxproj -> C:\Users\Dreamer\Desktop\iguana-master\build\Debug\test_xml.exe
8>已完成生成项目“test_xml.vcxproj”的操作。
10>xml_benchmark.vcxproj -> C:\Users\Dreamer\Desktop\iguana-master\build\Debug\xml_benchmark.exe
10>已完成生成项目“xml_benchmark.vcxproj”的操作。
14>------ 已跳过生成: 项目: ALL_BUILD, 配置: Debug x64 ------
14>没有为此解决方案配置选中要生成的项目
========== 生成: 成功 4 个,失败 9 个,最新 0 个,跳过 1 个 ==========
目测错误定位在内联函数 IGUANA_INLINE void skip_comment(auto &&it, auto &&end)上
你可以试一下vs2022 有没有问题,不确定vs2019 是否完整的支持了C++20.
您好,非常感谢您的回复,按照您的提示我更新VS2019 SDK 到20348, 可以全面支持c++20了,编译没有出错,例子也能顺利运行,非常感谢帮助。
针对这个库,我有几个技术性问题请教:
1、在结构体定义后REFLECTION的时候能否跳过结构体内某些变量,比如我知道iguana不支持指针,我某些结构体里面有vector这种结构,能否跳过这些变量或者说只能手动的强制转换后再序列化?
2、该库支持类变量导出么,类变量是否必须要public?
1、在结构体定义后REFLECTION的时候能否跳过结构体内某些变量,比如我知道iguana不支持指针,我某些结构体里面有vector这种结构,能否跳过这些变量或者说只能手动的强制转换后再序列化?
是可以跳过结构体的一些变量的,只要不反射他们就行了。
2、该库支持类变量导出么,类变量是否必须要public?
是的,类变量必须是public。
请问出现这种错误是因为有不支持的类型么?iguana/json_writer.hpp(53,15): error C2228: “.data”的左边必须有类/结构/联合
应该不是,如果是不支持的类型的话一般是报错找不到函数,能提供更具体的信息吗?
您好,是几个char字符串的问题,貌似这个库是不是不支持char tag[]这样的类型?
另外,能方便加个联系方式吗? 感谢
有群的,README里面有 701594518
请留意最后报错的文件位置,细读每个单词,因为可能是你本地的宏替换了标准库里面的函数名