在MinGW-W64在线安装程序中,您可以选择几个字段.但是我找不到任何关于此的文件,我所做的猜测并没有给我我想要的行为.
很明显,很多工作已经进入这个项目,所以很可惜因为缺乏基本文档而受到阻碍.
"版本"和"架构"字段是不言自明的,但我遇到的其他字段是(显示为当前安装程序的值):
posix和win32dwarf和sjlj0,1,2.我在之前的安装中选择的值是win32,seh并且1(从那时起显然选项已经改变,但我不知道什么是什么).
每个选项的优缺点是什么,特别是线程模型和异常处理,以及哪个版本"最佳"?
我遇到的具体问题x86_64-win32-seh-rev1是:
std::thread并且std::condition_variable不受支持我可以解决调试问题但是使用C++ 11线程真的很棒.
我刚刚开始学习C并安装现在的QT x64(在此处形成:http://tver-soft.org/qt64).我有两个安装选项:MinGW 4.9.2 SEH或MinGW 4.9.2 SJLJ.
问题:安装哪个更好,为什么?
我读过sjlj vs dwarf vs seh之间有什么区别?和https://wiki.qt.io/MinGW-64-bit#Exception_handling:_SJLJ.2C_DWARF.2C_and_SEH但一无所知(C和compiller语言的新手).
我想玩GCC 4.5但是在GCC的网站上它说他们不提供二进制文件.我认为从头开始下载源代码并构建GCC有点过分(即使我使用的操作系统(Windows)相当模糊).
我在哪里可以下载GCC 4.5 for Windows?
(我不想要所有的Cygwin,只是GCC)
我正在寻找(并且肯定我不是唯一一个)在Windows上构建基于MinGW的64位Qt程序的最直接方式.直线向前意味着最小的努力和时间(例如,用于建造和设置).目前,我使用MinGW/OpenGL和QtCreator运行qt-project.org网站的常规官方开发环境,适用于Windows 32位.当然我已经阅读了qt-project.org的(未完成的...)64位维基页面,我也阅读了不同的stackoverflow问题,但我仍然感到困惑.我知道如何在其他帖子中处理如何构建64位Qt的主题,但这不是我的问题,我需要的是概述和最有利的64位MinGW端口.
让我感到困惑的一件事是,来自mingwbuilds sourceforge项目的"x64-Qt-5.2.1 + QTCreator-3.0.1-(gcc-4.8.2-seh).7z"包中的DLL似乎是32位.
为了澄清我的问题,我还要问一些相关的问题:
非常感谢你的帮助.
GCC支持Setjump-longjump(sjlj)和基于Dwarf2表的展开(dw2)异常处理模型.这两个模型之间有什么区别以及如何选择合适的模型?为什么Dwarf2基于表的展开(dw2)是更有效的模型?据我所知,这两个模型不能混在一起.
throw()在C++ 03中作为异常说明符添加,但在C++ 11中对于说明noexcept符已弃用.
在分析了一些代码以找到使用的速度之后throw(),noexcept我发现所有这些函数的函数调用大致相同.
结果:
throw() noexcept plain old function
11233 ms 11105 ms 11216 ms
11195 ms 11122 ms 11150 ms
11192 ms 11151 ms 11231 ms
11214 ms 11218 ms 11228 ms
compiled with MinGW using g++ -o test.exe inc.cpp no.cpp -std=c++11 -O3
Run Code Online (Sandbox Code Playgroud)
这是我用来描述的代码:
int main() {
unsigned long long iter = (unsigned long long)1 << (unsigned long long)40;
auto t1 = std::chrono::high_resolution_clock::now();
for(unsigned long long i = 0; i < …Run Code Online (Sandbox Code Playgroud) 如果我想在 Windows 10 下使用 robotsgo 运行任何代码,我会收到以下错误:
# github.com/go-vgo/robotgo
In file included from ./bitmap/../base/str_io_c.h:2:0,
from ./bitmap/goBitmap.h:17,
from ..\go\src\github.com\go-vgo\robotgo\robotgo.go:45:
./bitmap/../base/zlib_util_c.h:2:18: fatal error: zlib.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
我的路径变量:
https://i.stack.imgur.com/FTXBB.png
遵循安装并检查问题。
https://github.com/go-vgo/robotgo#installation
有人在这里遇到了类似的错误:https ://github.com/go-vgo/robotgo/issues/100
但他们的修复“已解决,应更改 %PATH% 中的 gcc 编译器”对我不起作用。
import (
"github.com/go-vgo/robotgo"
)
func main() {
robotgo.ScrollMouse(10, "up")
robotgo.MouseClick("left", true)
robotgo.MoveMouseSmooth(100, 200, 1.0, 100.0)
}
Run Code Online (Sandbox Code Playgroud) 我已经在很多网站上搜索过这个,但都失败了。但是TDM在“TDM-gcc”中代表什么?当我想选择 gcc 作为编译器时,我很困惑。那么,有什么区别呢?我应该选择TDM还是NON-TDM?还是 TDM 仅适用于 minGW?在 Windows 平台上?
官方 TDM-gcc 站点甚至不解释它...
我运行 x86_64 Fedora Linux 31 主机并想编译一些最简单的 Rust 代码:
fn main() {
println!("Hello, world!");
}
Run Code Online (Sandbox Code Playgroud)
它从主机编译到这个主机本机很好,但是当我尝试将它交叉编译到 i686 或 x86_64 窗口时,它无法编译。
我阅读了stackoverflow(例如here)并在互联网上搜索了类似的问题以及如何解决它,但没有任何收益。
我已经安装了所有必要的目标:
[pfemidi@pfemidi hello_cargo]$ rustup show
Default host: x86_64-unknown-linux-gnu
rustup home: /home/pfemidi/.rustup
installed targets for active toolchain
--------------------------------------
i686-pc-windows-gnu
i686-unknown-linux-gnu
i686-unknown-linux-musl
x86_64-pc-windows-gnu
x86_64-unknown-linux-gnu
x86_64-unknown-linux-musl
active toolchain
----------------
stable-x86_64-unknown-linux-gnu (default)
rustc 1.39.0 (4560ea788 2019-11-04)
[pfemidi@pfemidi hello_cargo]$
Run Code Online (Sandbox Code Playgroud)
我已经将 mingw32 安装为 mingw64,这个小测试 C++ 代码已经被 mingw32 编译为 mingw64 就好了,没有错误:
#include <iomanip>
#include <iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return …Run Code Online (Sandbox Code Playgroud)