std::future 可以这样直接定义吗?
#include <iostream></iostream>
#include <future></future>
int main() {
std::future<int> feature;
return 0;
}
1
wutiantong 2019-04-03 10:52:23 +08:00 1
可以
Default constructor. Constructs a std::future with no shared state. After construction, valid() == false. https://en.cppreference.com/w/cpp/thread/future/future |
2
Iain OP @wutiantong 可是为什么我的编译器会报错,
aggregate 'std::future<int> feature' has incomplete type and cannot be defined 用其他电脑测试无错...也设置了 g++11 支持 可以提供一下解决思路吗 ? |
3
wutiantong 2019-04-03 13:36:45 +08:00 1
@Iain
1. 检查你的编译器是否支持 c++11 或以上 2. 检查你编译时是否打开了 c++11 或以上的开关 ( -std=c++11 ) 3. 确认代码里加了头文件 #include <future> |
4
Iain OP @wutiantong
我好像发现问题所在了,请问 mingw 的 thread model (有 posix、和 win32 ) 这个是否影响 c++11 新特性呢? mingw 4.9.2 posix 成功编译 mingw 6.3.0 win32 编译失败 |
5
wutiantong 2019-04-03 14:50:09 +08:00 1
@Iain 是这个问题,看这里就知道了: https://stackoverflow.com/a/30390278/6947776
|
6
Iain OP @wutiantong 您好,十分感谢您百忙之中为我解惑。
我又遇到一个问题... mingw-w64 两种 thread model ( posix /win32 ) 通过 makefile 生成的 dll 文件为何相差很大,一个 148kb ( win32 )一个 501kb ( posix ),而且通过 System.load 调用只能识别 win32 生成的 dll,对于 posix 模式生成的 dll 显示未找到 |
7
wutiantong 2019-04-04 09:49:35 +08:00 1
@Iain 看起来这个项目应该能帮到你: https://github.com/meganz/mingw-std-threads
|
8
Iain OP @wutiantong 感谢你的回复
我分别使用 mingw-w64 8.1.0、6.3.0、5.4.0、4.8.1 都是 posix thread model ;只有 5.4.0 版本生成的 dll 可以识别。 |
9
wutiantong 2019-04-04 10:46:16 +08:00 1
@Iain 找不到 dll 的问题多半还是跟你的编译环境和流程有关,但我没接触过 mingw 这方面的开发,爱莫能助啦
|
10
Iain OP @wutiantong
问题目前暂时是解决了,很感谢您的帮助! |