错误C2039:' chrono':不是' std'的成员。

时间:2016-08-30 03:04:38

标签: c++ visual-studio-2015 chrono

我正在使用Visual Studio 2015来创建Win32项目。我试图使用chrono库,但它说它无法找到它。我在控制台项目中使用chrono库测试了代码,但是它在控制台项目上工作,但在Win32项目上没有。

#include <chrono>
...
using namespace std::chrono;

LocalDriveHeader header;
auto durnow = system_clock::now ().time_since_epoch ();

header.version = VERSION;
header.flags = 0x0000;
header.sector_size = sector_size;
header.early_time = chrono::duration_cast <milliseconds> (durnow).count ();
...

=== EDIT ===

是的,我确实包含了chrono标题。 该项目是带有预编译头的Win32项目。

c:\users\eunbin\documents\visual studio 2015\projects\gamgeum\gamgeum\container.cpp(123): error C2039: 'chrono': is not a member of 'std'
1>  c:\program files (x86)\microsoft visual studio 14.0\vc\include\memory(1175): note: see declaration of 'std'
1>c:\users\eunbin\documents\visual studio 2015\projects\gamgeum\gamgeum\container.cpp(123): error C2871: 'chrono': a namespace with this name does not exist
1>c:\users\eunbin\documents\visual studio 2015\projects\gamgeum\gamgeum\container.cpp(126): error C2653: 'system_clock': is not a class or namespace name
1>c:\users\eunbin\documents\visual studio 2015\projects\gamgeum\gamgeum\container.cpp(126): error C3861: 'now': identifier not found
1>c:\users\eunbin\documents\visual studio 2015\projects\gamgeum\gamgeum\container.cpp(126): error C2228: left of '.time_since_epoch' must have class/struct/union
1>  c:\users\eunbin\documents\visual studio 2015\projects\gamgeum\gamgeum\container.cpp(126): note: type is 'unknown-type'
1>c:\users\eunbin\documents\visual studio 2015\projects\gamgeum\gamgeum\container.cpp(131): error C2653: 'chrono': is not a class or namespace name
1>c:\users\eunbin\documents\visual studio 2015\projects\gamgeum\gamgeum\container.cpp(131): error C2065: 'duration_cast': undeclared identifier
1>c:\users\eunbin\documents\visual studio 2015\projects\gamgeum\gamgeum\container.cpp(131): error C2065: 'milliseconds': undeclared identifier
1>c:\users\eunbin\documents\visual studio 2015\projects\gamgeum\gamgeum\container.cpp(131): error C3536: 'durnow': cannot be used before it is initialized

4 个答案:

答案 0 :(得分:6)

您的文件顶部可能缺少#include <chrono>。您需要此#include才能访问std::chrono命名空间。

答案 1 :(得分:2)

我将#include <chrono>添加到预编译的标头中。 我不知道为什么将#include <chrono>添加到实际来源导致问题......

答案 2 :(得分:2)

我的案例中的问题是“chrono”的include语句在“stdafx.h”之前。

答案 3 :(得分:2)

我刚才遇到了这个问题。就我而言,我向项目中新添加了一个名为“ Time.h”的文件,这导致名称冲突,该名称与MSVC的STL中包含的内部标头有关。奇怪的是,它以您描述的方式体现出来。重命名该文件即可解决该问题。