【发布时间】:2014-01-31 06:54:13
【问题描述】:
在竭尽全力之后转向 Stack Overflow。
我在 Windows 7 OS 64 位系统上运行 Code Blocks 13.12 和 MinGW 4.8.1。我花了两天时间试图让编译器(静态)链接到 SFML 2.1 库。我关注了 SFML tutorial 和 this 视频教程 - 在最终链接之前重新安装了 Code Blocks 和 MinGW 两次。
在那之后,我松了一口气,SFML 被识别了,但是当我尝试构建和运行时,我遇到了 50 个错误,表明 C++11 功能没有。
在编译器选项中添加了-std=gnu++11,其中 13 个错误消失了。
其余的错误都分为两类:mutex 不是 std 的成员 和 从时间 t 开始不是 chrono::_V2::steady 时钟的成员。我什至不确定 _V2 是什么。
我错过了什么?
-------------- Build: Release in PumpTracker2.0 (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -std=gnu++11 -DSFML_STATIC -O2 -std=gnu++11 -IC:\SFML-2.1\include -IC:\SFML-2.1\include -c C:\Users\WITcom\Desktop\C++\PumpTracker2.0\main.cpp -o obj\Release\main.o
In file included from C:\Users\WITcom\Desktop\C++\PumpTracker2.0\main.cpp:25:0:
C:\Users\WITcom\Desktop\C++\PumpTracker2.0\Account.h:37:1: error: 'mutex' in namespace 'std' does not name a type
std::mutex mu;
^
C:\Users\WITcom\Desktop\C++\PumpTracker2.0\Account.h:86:22: error: 'to_time_t' is not a member of 'std::chrono::_V2::steady_clock'
time_t currentTp = std::chrono::steady_clock::to_time_t(newly);
C:\Users\WITcom\Desktop\C++\PumpTracker2.0\Account.h:94:48: error: 'from_time_t' is not a member of 'std::chrono::_V2::steady_clock'
std::chrono::steady_clock::time_point tNew = std::chrono::steady_clock::from_time_t(currentTp);
^
C:\Users\WITcom\Desktop\C++\PumpTracker2.0\main.cpp:51:2: error: 'mutex' is not a member of 'std'
std::mutex mu3;
^
C:\Users\WITcom\Desktop\C++\PumpTracker2.0\main.cpp:51:13: error: expected ';' before 'mu3'
std::mutex mu3;
^
C:\Users\WITcom\Desktop\C++\PumpTracker2.0\main.cpp:52:19: error: 'mutex' was not declared in this scope
std::unique_lock<mutex> locker3(mu3, std::defer_lock);
^
C:\Users\WITcom\Desktop\C++\PumpTracker2.0\main.cpp:52:24: error: template argument 1 is invalid
std::unique_lock<mutex> locker3(mu3, std::defer_lock);
^
C:\Users\WITcom\Desktop\C++\PumpTracker2.0\main.cpp:52:33: error: invalid type in declaration before '(' token
std::unique_lock<mutex> locker3(mu3, std::defer_lock);
C:\Users\WITcom\Desktop\C++\PumpTracker2.0\main.cpp:214:22: error: 'to_time_t' is not a member of 'std::chrono::_V2::steady_clock'
pS->tpNewest = std::chrono::steady_clock::to_time_t(NextPump);
^
C:\Users\WITcom\Desktop\C++\PumpTracker2.0\main.cpp:245:51: error: 'from_time_t' is not a member of 'std::chrono::_V2::steady_clock'
std::chrono::steady_clock::time_point TT2 = std::chrono::steady_clock::from_time_t(pS->tpNewest);
^
Process terminated with status 1 (0 minute(s), 4 second(s))
37 error(s), 47 warning(s) (0 minute(s), 4 second(s))
【问题讨论】:
-
请完整发布您看到的实际错误消息,并可能提出原因。
-
感谢您最初的回复,迈克。我已经发布了一些错误 - 最相关的易于阅读。
-
假设您使用
-std=c++11构建,error: 'mutex' in namespace 'std' does not name a type可能是由于标题未包含在具有该错误的文件中。我无法就 to_time_t和from_time_t错误提出任何建议。 -
标准的 MinGW 发行版滞后很多,大部分已经转向 mingw64,我建议nuwen distribution
-
见鬼的建议,Mgetz。我现在减少到 17 个错误——所有处理 time_t 的错误都消失了,这非常令人鼓舞。但是,仍然无法识别
和朋友。也许 Mike 是对的,并且标题 没有被包括在内。我会进一步调查。任何其他建议都非常受欢迎。
标签: c++11 mingw codeblocks sfml