Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VS 2019编译不成功 #177

Open
jackgoodman2 opened this issue Jun 24, 2023 · 10 comments
Open

VS 2019编译不成功 #177

jackgoodman2 opened this issue Jun 24, 2023 · 10 comments

Comments

@jackgoodman2
Copy link

安装源设计的cmake文件生成的VS项目在2019版本中无法注册为c++20,编译的时候出现诸多错误。
自己在cmakelist中配置为set c++ 20后,对于例子项目出现编译器内部错误提示,始终无法通过编译,不知是因为只兼容Linux系统么

@jackgoodman2
Copy link
Author

已启动生成…
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 个 ==========

@jackgoodman2
Copy link
Author

目测错误定位在内联函数 IGUANA_INLINE void skip_comment(auto &&it, auto &&end)上

@qicosmos
Copy link
Owner

你可以试一下vs2022 有没有问题,不确定vs2019 是否完整的支持了C++20.

@jackgoodman2
Copy link
Author

您好,非常感谢您的回复,按照您的提示我更新VS2019 SDK 到20348, 可以全面支持c++20了,编译没有出错,例子也能顺利运行,非常感谢帮助。
针对这个库,我有几个技术性问题请教:
1、在结构体定义后REFLECTION的时候能否跳过结构体内某些变量,比如我知道iguana不支持指针,我某些结构体里面有vector这种结构,能否跳过这些变量或者说只能手动的强制转换后再序列化?
2、该库支持类变量导出么,类变量是否必须要public?

@bbbgan
Copy link
Collaborator

bbbgan commented Jun 25, 2023

1、在结构体定义后REFLECTION的时候能否跳过结构体内某些变量,比如我知道iguana不支持指针,我某些结构体里面有vector这种结构,能否跳过这些变量或者说只能手动的强制转换后再序列化?

是可以跳过结构体的一些变量的,只要不反射他们就行了。

2、该库支持类变量导出么,类变量是否必须要public?

是的,类变量必须是public。

@jackgoodman2
Copy link
Author

请问出现这种错误是因为有不支持的类型么?iguana/json_writer.hpp(53,15): error C2228: “.data”的左边必须有类/结构/联合

@bbbgan
Copy link
Collaborator

bbbgan commented Jun 25, 2023

应该不是,如果是不支持的类型的话一般是报错找不到函数,能提供更具体的信息吗?

@jackgoodman2
Copy link
Author

您好,是几个char字符串的问题,貌似这个库是不是不支持char tag[]这样的类型?
另外,能方便加个联系方式吗? 感谢

@bbbgan
Copy link
Collaborator

bbbgan commented Jun 25, 2023

有群的,README里面有 701594518

@LinkCode7
Copy link

请留意最后报错的文件位置,细读每个单词,因为可能是你本地的宏替换了标准库里面的函数名

171930433 pushed a commit to 171930433/iguana that referenced this issue Jun 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants