问题标签 [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.
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) 甚至不在包含目录中。
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 位编译器正确设置构建环境,以便找到我的所有目录?
我注意到有许多包含目录:
C:\mingw\x86_64-w64-mingw32\包括
C:\mingw\lib\gcc\x86_64-w64-mingw32\5.1.0\include
加上我在构建项目时创建的自己的目录
- C:\mingw\包括
我在这里做错了什么?我应该使用前两个目录之一作为我的包含目录吗? 我认为这是我把事情搞砸的地方。
c++ - 标准::向量优化实施
在文档中,我可以看到std::vector<bool>
通过使每个布尔值占用一位来优化空间效率。从文档中:
使 std::vector 节省空间的方式(以及是否完全优化)是实现定义的。
这是否意味着它取决于编译器的实现?如果支持,我在哪里可以检查我的编译器是否支持它?他们为什么不希望它得到支持?这似乎是一个非常简单有效的实现。
如果不是,如果我希望进行这种优化,这意味着什么?这意味着什么?
我正在使用 TDM GCC 工具集。
c++ - wxColourPickerCtrl tdm-1 gcc
从 32 位 MinGW 4.8 升级到 32 位 TDM-1 GCC 5.1.0 后,wxColourPickerCtrl 会导致我的程序崩溃,无论我是否更改颜色,或者在 ColorPickerCtrl 对话框显示后单击确定或取消。我在 Windows 10 上使用 wxWidgets-3.0.2(单片,共享)。我想知道这是否是一个错误。
创建具有控件的对话框的构造函数(省略了某些部分):
事件处理:
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()
都是未评估的上下文,所以我不确定有什么区别。
gcc - `-march` 和指令集开关之间会不会有冲突?
我正在使用以下命令编译示例程序:
问题:
- 为什么 GCC 不抱怨启用 MMX、SSE4 和 3DNow 的开关!与所选架构 i386 不兼容?
- 编译器是否生成无法在 i386 上运行的可执行文件?
python - 在 Windows 下扩展 Python 时的链接问题
我正在为该项目使用 TDM-GCC-64。这是最小的源代码(完整的源代码包括 Python 模块初始化的代码):
并且Makefile
(原始规则将代码编译成.so
文件):
然后运行make test
给出:
我也检查libpython35.dll.a
过nm
,看起来功能在那里。例如,可以在 的输出中找到以下文本nm
:
那么问题出在哪里?谢谢。
c - netbeans c程序构建失败,tdm-gcc msys
我最近开始使用 netbeans 在 c 中编程。我通常使用代码块。为此,我已经安装了 tdm-gcc 和 msys。
程序正在成功编译。但在执行时,它显示构建失败(退出值 2)。
有人可以帮我解决我做错了什么吗?
string - C++ cout 或 wcout 包含“\n”的字符串不拆分行
C++11 和编译器是 TDM-GCC。
我制作了一个 ini 文件并通过 WinAPI GetPrivateProfileStringW 从中读取字符串(UCS-2 LE BOM)。
我的函数库将返回一个变量 std::wstring。它看起来不错。然后使用 wcout,就像:
我在屏幕上看到了什么:
我想要的是:
我不确定为什么“\n”在这种情况下不起作用。
为避免这种情况,我可以创建多个 INI 密钥并使用“endl”计算它们。
但是在这个项目中,这里有多少行应该是动态的。
如何从屏幕上的 Windows API 中找出单个字符串变量,变成多行?