标签: mingw

使用g ++编译时,哪个C++标准是默认的?

我有一段代码如下所示.让我们说它在一个名为的文件中example.cpp

#include <fstream>
#include <string> // line added after edit for clarity

int main() {
    std::string filename = "input.txt";
    std::ifstream in(filename);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在Windows上,如果我输入cmd命令g++ example.cpp,它将失败.这是一个很长的错误列表,我认为主要是由于链接器抱怨无法转换stringconst char*.

但是如果我使用像这样的附加参数运行编译器:g++ -std=c++17 example.cpp它将编译并正常工作而没有任何问题.

当我运行前命令时会发生什么?我猜测C++编译器的默认版本标准被调用,但我不知道哪个?作为程序员/开发人员,我应该总是使用后一个命令和额外的参数吗?

c++ mingw g++

32
推荐指数
7
解决办法
2万
查看次数

在非Microsoft平台上使用组件对象模型(COM)

我经常遇到类似的情况:我有一堆COM .DLL(没有IDL文件),我需要使用它并调用它们来访问一些外来的(非开放的,未记录的)数据格式.

Microsoft的Visual Studio平台具有非常好的功能,可以导入这些COM DLL并在我的项目中使用它们(Visual C++的#import指令,或使用Visual Basic .NET的对话框挑选和添加它们) - 这是供应商推荐的使用它们的方法.

我有兴趣找到一种在非Microsoft开发平台上使用这些DLL的方法.也就是说,在使用MinGW或Cygwin编译的C++项目中使用这些COM类,或者甚至将Wine的GCC端口编译为linux(将C++作为目标,将Win32编译为在Linux上本机运行的二进制文件).

我使用这个驱动程序取得了一些有限的成功,但是这在100%的情况下都没有成功(我不能使用某些方法返回的COM对象).

有人在类似情况下取得了成功吗?

c++ com cygwin wine mingw

31
推荐指数
2
解决办法
2万
查看次数

为什么我的Qt 4.5应用程序在Windows下打开一个控制台窗口?

我一直在Linux下玩Qt Creator 4.5.我的应用程序在Linux下构建得很好,但是如果我在Windows中构建,应用程序总是在启动时打开一个控制台窗口.

我可以阻止这样做吗?

我正在使用默认的MinGW设置构建,也许这是相关的.如果需要,我可以使用Visual Studio构建,但我想先了解发生了什么......

编辑:我刚刚在Windows下使用Qt Creator创建了一个简单的测试GUI应用程序,它没有表现出这种行为.由于在linux下创建项目的方式,或者我的应用程序执行了导致控制台窗口出现的内容,因此发生了此行为.我会在诊断时发布详细信息,以防其他人帮助.

windows console qt mingw qt-creator

31
推荐指数
5
解决办法
2万
查看次数

如何在WIndows中使用MinGW构建OpenSSL?

我想用MinGW在Windows中构建OpenSSL,
我该怎么做?请帮我.
谢谢.

c++ openssl mingw msys

31
推荐指数
1
解决办法
3万
查看次数

构建gcc/libstdc ++时使用了哪些配置选项?

在阅读了DLL和EXE之间传递空对象的问题之后std::string,我担心用于构建我的gcc/libstdc ++的configure选项.更具体我想知道是否--enable-fully-dynamic-string在期间使用./configure.

我在Windows XP上使用MinGW 4.4.0.

  1. 有人知道用于构建此版本的配置吗?

  2. 是否有一般方法可以为任何GNU gcc安装找到此信息?gcc手册没有给我这个主题的暗示.

感谢您的输入!

c++ gcc mingw configure libstdc++

30
推荐指数
1
解决办法
2万
查看次数

如何使用MinGW gdb调试器在Windows中调试C++程序?

我已经找到了关于这方面的文档,一无所获.我安装了MinGW,效果很好.我只是不知道如何使用调试器.

给出一些简单的代码,比如名为"mycode.cpp"的文件:

int main()
{
    int temp = 0;

    for (int i = 0; i < 5; ++i)
        temp += i;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

...我该怎么调试呢 我在Windows中使用MinGW和GDB调试代码的命令是什么?我可以像在Visual Studio中那样通过命令行单步执行代码吗?如果是这样,我用什么命令来做到这一点?

有没有关于在那里使用GDB的教程?我找不到任何东西,但是如果有人能指引我去做一件很棒的话.我厌倦了编写大量的std::cout语句来调试复杂的代码.

c++ windows debugging gdb mingw

30
推荐指数
2
解决办法
5万
查看次数

程序找不到libgcc_s_dw2-1.dll

可能重复:
程序无法启动,因为缺少libgcc_s_dw2-1.dll

我正在使用Code :: Blocks和MinGW 4.4(我认为)编译器来创建一个C++项目.如果我从它的目录运行它,而不是从Code :: Blocks中运行,我会收到此系统错误.

The program can't start because libgcc_s_dw2-1.dll is missing from your computer.  Try reinstalling the program to fix this problem.
Run Code Online (Sandbox Code Playgroud)

这篇文章中, hardmath表示要添加-static-libgcc到编译器标志,静态链接到dll.当我尝试这个时,错误仍然发生.我可以通过将MinGW bin目录添加到我的计算机的Path变量来实现它,但我计划通过互联网分发我的程序.

该问题仅在更新到最新的G ++编译器后出现.除了我之外,这个解决方案为其他所有人工作的原因是什么?

c++ mingw codeblocks static-linking

30
推荐指数
1
解决办法
7万
查看次数

无法找到过程入口点__gxx_personality_v0

编者注:类似于"程序错误点_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_无法在动态链接库中找到libstdc++-6.dll"的错误消息具有相同的原因,并且适用相同的解决方案.


如果我想在Windows中运行我的Irrlicht C++控制台应用程序,我会不断收到此错误:

the procedure entry point __gxx_personality_v0 could not be located in the dynamic link library libstdc++-6.dll

我正在使用CodeBlocks v12.11与MinGW和Irrlicht v1.8引擎.我正确设置了它.在我的电脑上还有一个安装了MinGW的Qt.是否可能存在冲突?

这是源代码:

#include <irrlicht.h>

using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

int main() {
    IrrlichtDevice *device = createDevice( video::EDT_OPENGL);

    if (!device)
        return 1;

    IVideoDriver* driver = device->getVideoDriver();
    ISceneManager* smgr = device->getSceneManager();
    IGUIEnvironment* guienv = device->getGUIEnvironment();

    guienv->addStaticText(L"Hello World", core::recti(10, 10, 100, 30));
    device->setWindowCaption(L"Hello World! - …
Run Code Online (Sandbox Code Playgroud)

c++ qt mingw codeblocks irrlicht

30
推荐指数
2
解决办法
3万
查看次数

在Win32上使用GCC将前导下划线添加到装配符号?

我有一段C代码调用程序集中定义的函数.举个例子,假设foo.c包含:

int bar(int x);  /* returns 2x */
int main(int argc, char *argv[]) { return bar(7); }
Run Code Online (Sandbox Code Playgroud)

并且bar.s包含x86程序集中bar()的实现:

.global bar
bar:    movl 4(%esp), %eax
        addl %eax, %eax
        ret
Run Code Online (Sandbox Code Playgroud)

在Linux上,我可以轻松地使用GCC编译和链接这些源,如下所示:

% gcc -o test foo.c bar.s
% ./test; echo $?
14
Run Code Online (Sandbox Code Playgroud)

在使用MinGW的Windows上,此操作失败并显示"未定义引用"栏'的错误.事实证明,在Windows上,所有具有C调用约定的函数标识符都以下划线为前缀,但由于"bar"在汇编中定义,因此它不会获得此前缀并且链接失败.(所以错误信息实际上是抱怨错过了符号_bar,而不是吧.)

总结一下:

% gcc -c foo.c bar.s
% nm foo.o bar.o
foo.o:
00000000 b .bss
00000000 d .data
00000000 t .text
         U ___main
         U _bar
00000000 T _main

bar.o:
00000000 b .bss
00000000 d .data
00000000 t .text
00000000 T …
Run Code Online (Sandbox Code Playgroud)

c assembly winapi gcc mingw

29
推荐指数
3
解决办法
2万
查看次数

MinGW-w32 vs. MinGW

MinGW项目与MinGW-W64项目的32位部分有什么区别?MinGW-W64的32位部分是否与x64有任何关系?

好像他们的编译器做了完全相同的事情......

mingw mingw32 mingw-w64

29
推荐指数
4
解决办法
2万
查看次数