c++ - C++ 日期库因时区而失败
问题描述
这个以前玩过一次。我正在尝试从 C++日期库中获取一些数据,但捕获到异常。我正在编译
-DUSE_AUTOLOAD=0 -DHAS_REMOTE_API=0 -DUSE_OS_TZDB=1
代码有什么问题?
#include <iostream>
#include "date/tz.h"
#include <exception>
using namespace date;
using namespace std::chrono;
int main(int argc, char** argv) {
try {
auto current_time_zone = make_zoned("Europe/Athens", std::chrono::system_clock::now());
auto current_day = date::format("%A", current_time_zone);
auto current_time = date::format("%H:%M", current_time_zone);
std::cout << "day: " << current_day << ", time: " << current_time << " in timezone: " << current_time_zone << std::endl;
//std::cout << " in timezone: " << current_time_zone << std::endl;
} catch ( std::exception& e) {
std::cout << e.what() << std::endl;
}
}
解决方案
您需要使用-pthread
标志。tz.cpp
用于call_once
进行部分初始化。没有-pthread
它是行不通的(因为它下面需要类似的东西__gthread_once
)。有关更多详细信息,请参阅此内容。
gdb
您可以通过使用(使用)运行您的示例来验证这是否是问题所在catch throw
。
推荐阅读
- python - 将列表 (list[n:k]) 的内容与连续乘数相乘
- flutter - Flutter just_audio 循环模式不循环
- html - 如何使用 flexbox 使水平行中的列相等?
- javascript - this.props.children.map 不是 arrayOf PropTypes 上的函数 - react-responsive-accordion
- python - 使用 tensorflow 和 keras 运行 .py 时出错
- macos - MacOS vm_read API 看起来很不稳定(没有这样的过程)
- spring - 未抛出 spring webflux 的自定义异常
- flutter - 在小部件中使用圆形创建颜色 - Flutter
- javascript - 为什么嵌套在地图函数中时,material-ui 的工具提示不显示?
- sql - 如何修复此错误消息“唯一约束”?