问题标签 [tdm-gcc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2330 浏览

c++ - 即使启用了 C++11 和 C++14,也未声明 nullptr

我刚刚安装了 CodeLite 和最新版本的 TDM-GCC 编译器。它同时支持 C++11 和 C++14。但是,当我使用它编写程序时,nullptr它仍然告诉我'nullptr' was not declared in this scope.

在此处输入图像描述

为了nullptr被编译器接受,我还需要做什么?

0 投票
1 回答
600 浏览

build - Windows 上的 C++ 构建环境

可能很难相信,但我仍然很难完全理解什么是构建环境。多年来我一直认为它是一个目录树,我的编译器可以在其中找到所有必要的头文件lib文件来构建我的项目。我从来没有真正正确地学习过这个概念,直到最近才对它有了基本的了解。

我正在使用 TDM-GCC 64 位编译器、MSYS、Windows 7 64 位。

当我构建我的库以用于我的项目时,它们都将头文件和 lib 文件放入我的 C:\mingw 目录中.. 即.. C**:\mingw\include & C:\mingw\lib**

假设我正在构建 zlib。zlib 目录将包含 lib 和 include 头文件,我的根 c:\mingw 目录还将包含这些目录中的 zlib 头文件和 lib 文件 c:\mingw\include & c:\mingw\lib 目录。

因此,当我构建需要 zlib 作为依赖项的其他库时,我最初使用以下命令: ./configure --prefix = c:\mingw 当我使用“ make ”命令(全部在 MSYS 中)构建它时,我的新库可以在 c:\mingw\include & c:\mingw\lib 目录中找到它的所有依赖项。 我做对了吗?

这就是我感到困惑的地方。 当我在使用相同编译器 TDM-GCC 64 位的 CodeBlocks IDE 中编写项目时,我是将搜索目录设置为 c:\mingw\include & c:\mingw\lib 目录还是使用 zlib 目录 c:\zlib\include 和 c:\zlib\lib 目录?

或者.....我是否应该将整个 zlib 目录放在 c:\mingw 目录中,以便我的文件路径如下所示:
c:\mingw\zlib\include & c:\mingw\zlib\lib 目录

如果我对以上所有内容都错了,我该如何在 Windows 上建立一个健壮的构建环境?

另外....为了补充我的知识空白,是否有任何书籍/教科书可以很好地解释这种事情?

我决定暂时不使用 cygwin。

很多问题;)

谢谢,对不起,长篇大论。

*******下面的后期添加*************

我在 c:\ming 中放置了一个测试文件,并使用我的 cmd 行调用了命令 gcc -v test.h (test.h 是我放置在根目录中的测试文件,用于测试我的编译器的搜索路径。这是输出:

如您所见,当使用 --prefix 时,其他包含目录: C:/mingw/lib/gcc/x86_64-w64-mingw32/5.1.0/include 被忽略。我想知道为什么 mingw 编译器会这样做。

我无法让我的编译器搜索的文件 (math.h) 甚至不在包含目录中。

0 投票
0 回答
1649 浏览

c++ - TDM-GCC c++ 编译器(设置)

我现在正在使用 TDM-GCC 64 位编译器,并且最初构建了我的所有库(其他库的依赖项)和使用此编译器创建 64 位二进制文​​件的项目(这是我想要的)。

最近我遇到了一些构建问题,我正在构建一个包含 math.h 的 Fast Light Tool Kit (gui toolkit) 项目。这是我遇到第一个构建问题的地方,让我意识到我可能错误地设置了构建环境。一切都是使用 MSYS 构建的。

我的根目录是 C:\mingw,所以当我配置每个项目时,我使用了以下命令: ./configure --prefix=c:\mingw 并创建了相应的 c:\mingw 包含和 lib 目录(c:\mingw\include & c:\mingw\lib)。

FLTK 包含一个 math.h 文件,它指示编译器在相关的包含目录中搜索适当的 math.h c++ 文件,但问题是它告诉我它找不到它(math.h:没有这样的文件或目录ETC)。我正在使用 Windows 7 64 位。

我认为这是因为我设置构建环境的方式,我可能没有考虑到 TDM-GCC 可以编译 32 位和 64 位二进制文​​件的事实,所以这在某种程度上影响了编译器对我的 c++ math.h 位置的解释文件是。

我在此链接上查看了有关如何使用 Mingw64 构建库的说明: 在此处输入链接描述,但我认为 TDM-GCC 已经解决了本文旨在解决的一些问题。

如何为 TDM-GCC 64 位编译器正确设置构建环境,以便找到我的所有目录?

我注意到有许多包含目录:

  1. C:\mingw\x86_64-w64-mingw32\包括

  2. C:\mingw\lib\gcc\x86_64-w64-mingw32\5.1.0\include

加上我在构建项目时创建的自己的目录

  1. C:\mingw\包括

我在这里做错了什么?我应该使用前两个目录之一作为我的包含目录吗? 我认为这是我把事情搞砸的地方。

0 投票
3 回答
1467 浏览

c++ - 标准::向量优化实施

文档中,我可以看到std::vector<bool>通过使每个布尔值占用一位来优化空间效率。从文档中:

使 std::vector 节省空间的方式(以及是否完全优化)是实现定义的。

这是否意味着它取决于编译器的实现?如果支持,我在哪里可以检查我的编译器是否支持它?他们为什么不希望它得到支持?这似乎是一个非常简单有效的实现。

如果不是,如果我希望进行这种优化,这意味着什么?这意味着什么?

我正在使用 TDM GCC 工具集。

0 投票
0 回答
64 浏览

c++ - wxColourPickerCtrl tdm-1 gcc

从 32 位 MinGW 4.8 升级到 32 位 TDM-1 GCC 5.1.0 后,wxColourPickerCtrl 会导致我的程序崩溃,无论我是否更改颜色,或者在 ColorPickerCtrl 对话框显示后单击确定或取消。我在 Windows 10 上使用 wxWidgets-3.0.2(单片,共享)。我想知道这是否是一个错误。

创建具有控件的对话框的构造函数(省略了某些部分):

事件处理:

0 投票
1 回答
231 浏览

c++ - 无法在 TDM-GCC 的 typeid 中使用 declval

编译器:TDM-GCC-5.1.0(SJLJ 展开)

我正在玩弄declval,我注意到我无法在它应该工作的上下文中使用它:作为typeid().

在下面的代码中,我使用declval它的一个主要用例:在不通过实例的情况下获取方法的返回类型。我得到的错误是 static_assert 消息declval,但这应该是不可能的,因为typeid()在这种情况下不评估它的参数:

这不会为我编译(使用 编译时-std=c++14)。我唯一的猜测是要么我发现了一个编译器错误,要么我做了一些明显错误的事情并且我看不到它。如果是后者,我很抱歉。

编辑:感谢 ildjarn 帮助我,解决方案是使用decltype,所以最后一行代码变为:

这很好用。然而,现在我的问题变成了:怎么会?两者typeid()decltype()都是未评估的上下文,所以我不确定有什么区别。

0 投票
1 回答
132 浏览

gcc - `-march` 和指令集开关之间会不会有冲突?

我正在使用以下命令编译示例程序:

问题:

  1. 为什么 GCC 不抱怨启用 MMX、SSE4 和 3DNow 的开关!与所选架构 i386 不兼容?
  2. 编译器是否生成无法在 i386 上运行的可执行文件?
0 投票
0 回答
201 浏览

python - 在 Windows 下扩展 Python 时的链接问题

我正在为该项目使用 TDM-GCC-64。这是最小的源代码(完整的源代码包括 Python 模块初始化的代码):

并且Makefile(原始规则将代码编译成.so文件):

然后运行make test给出:

我也检查libpython35.dll.anm,看起来功能在那里。例如,可以在 的输出中找到以下文本nm

那么问题出在哪里?谢谢。

0 投票
1 回答
182 浏览

c - netbeans c程序构建失败,tdm-gcc msys

我最近开始使用 netbeans 在 c 中编程。我通常使用代码块。为此,我已经安装了 tdm-gcc 和 msys。

程序正在成功编译。但在执行时,它显示构建失败(退出值 2)。

有人可以帮我解决我做错了什么吗?

0 投票
1 回答
227 浏览

string - C++ cout 或 wcout 包含“\n”的字符串不拆分行

C++11 和编译器是 TDM-GCC。

我制作了一个 ini 文件并通过 WinAPI GetPrivateProfileStringW 从中读取字符串(UCS-2 LE BOM)。

我的函数库将返回一个变量 std::wstring。它看起来不错。然后使用 wcout,就像:

我在屏幕上看到了什么:

我想要的是:

我不确定为什么“\n”在这种情况下不起作用。

为避免这种情况,我可以创建多个 INI 密钥并使用“endl”计算它们。

但是在这个项目中,这里有多少行应该是动态的。

如何从屏幕上的 Windows API 中找出单个字符串变量,变成多行?