草庐IT

c++ - 'mutex' 不是 MinGW 5.3.0 中 'std' 的成员

我正在使用MinGW5.3.0和Crypto++5.6.5:C:\MinGW>g++-std=c++11-s-D_WIN32_WINNT=0x0501LOG.cpp-U__STRICT_ANSI__Decclass.cpp\-IC:\\MinGW\\-IC:\\MinGW\\boost-LC:\\MinGW-lssl-lcrypto-lcryptopp-lgdi32-lPCRYPT\-lz-ltiny-lwsock32-lws2_32-lShlwapi编译结果出现如下错误。c:\mingw\cryptopp565\include\cryptopp\misc.h:287:14:error

c++ - std::any 跨越 mingw 中的共享库边界

我在跨共享库边界使用libstdc++的std::any实现和mingw时偶然发现了一个问题。它会产生一个std::bad_any_cast显然不应该(我相信)。我使用mingw-w64、gcc-7并使用-std=c++1z编译代码。简化代码:main.cpp:#include#include//prototypefromlib.cppvoiddo_stuff_with_any(conststd::any&obj);intmain(){do_stuff_with_any(std::string{"HelloWorld"});}lib.cpp:将被编译成共享库并与main.cpp中的可执

c++ - _O_WTEXT、_O_U16TEXT、_O_U8TEXT - 这些模式在 mingw 编译器中是否可行,是否有任何解决方法?

#include#include#includeintmain(void){_setmode(_fileno(stdout),_O_U16TEXT);wprintf(L"\x043a\x043e\x0448\x043a\x0430\x65e5\x672c\x56fd\n");return0;}编译时返回错误:_O_U16TEXT未在此范围内声明这是这个编译器的障碍吗? 最佳答案 好吧,有一个简单的解决方法:只使用这些常量的值而不是它们的名称。例如,_O_U16TEXT为0x00020000,_O_U8TEXT为0x00040000。

c++ - 在 MinGW 中使用 __argc 和 __argv

我想知道,在MinGW(我已经包含了windows.h)中有没有什么好的方法来使用内置的__argc和__argv(就像在VisualC++中一样),或者我是否必须做一些更复杂的事情来访问这些参数。我非常希望让这段代码在MinGW中工作(但我们并不总能得到我们想要的):#includeexternintmain(intargc,char*argv[]);intWINAPIWinMain(HINSTANCE,HINSTANCE,LPSTR,INT){returnmain(__argc,__argv);} 最佳答案 这些不是“内置”,它

c++ - 带 Eclipse CDT + MinGW + GLEW + GLFW 的 OpenGL : Undefined References

编辑:与此同时,我已经弄明白了这一点,并在下面写了一个详细的答案。我刚刚尝试在Win7上从MSVC10的Express版本切换到EclipseCDT,在配置时我遇到了以下简单OpenGL代码的问题(在VisualStudio中运行良好):#defineGLEW_STATIC#include#includeintmain(){GLFWwindow*w;if(!glfwInit())return-1;w=glfwCreateWindow(640,480,"HelloWorld",NULL,NULL);if(!w){glfwTerminate();return-1;}glfwMakeCont

c++ - Mingw 'std::function' 还没有声明?

首先,我在带有最新mingw版本的Windows上使用代码块。我正在使用sfml库开始游戏,但不幸的是我遇到了这个问题。我需要为我的状态管理器使用std::function,但它一直显示相同的错误:'std::function'尚未声明。我做了#include并使用了链接器选项-std=c++0x,但仍然没有成功。唯一不能编译的是这个头文件:#ifndefSTATEMANAGER_HPP_INCLUDED#defineSTATEMANAGER_HPP_INCLUDED#include#include"State.hpp"#include#includeclassStateManager

c++ - Windows 10 上带有 mingw 的 CMake : Detecting CXX compiler ABI info - failed

我想使用cmake在Windows10上创建MinGWMakefile。我已经安装了mingw,并且可以毫无问题地使用mingw32-make和g++命令。测试项目是一个super简单的CMakeLists.txt文件:cmake_minimum_required(VERSION3.10)project(hello-world)add_executable(hello-worldmain.cpp)和一个简单的main.cpp文件:#includeintmain(){std::cout这些是我用来创建makefile的命令:>>mkdirbuild>>cdbuild>>cmake-G"M

c++ - 使用 MinGW、freeglut 和 glew 编译简单的静态 OpenGL 4.0 程序

问题出在标题上,我会尝试在下面列出我已经尝试过的等等。首先,据我所知,为了在Windows上使用OpenGL4.0,您必须扩展或绕过默认的Windows库,因为它只提供OpenGL1.1。所以我们在C:/MinGW/安装了MinGW。接下来,我通过下载tarball来设置FreeGLUT。来自projectsite.根据instructions运行makefile提取和编译在./configure命令中添加少量--prefix。./configure--prefix=/c/Users/Owner/root/makeallmakeinstall现在我在/c/Users/Owner/roo

c++ - 膨胀的 EXE 大小,以及不需要的 Qt/MingW 依赖项

我正在尝试找出如何缩小在最新的QTSDK(4.8.2)(基于mingw/g++)下编译的EXE文件的大小。我正在开发一个普通的c++控制台应用程序,它有一个简单的循环并且只有#includesiostream,当我注意到它生成的exe文件大约为465kb时;比他们应该的要大得多!注释掉所有的流内容将它降低到预期的5kb范围(尽管剩余的代码大部分都是死的)。这似乎根本不对,特别是因为我正在处理的另一个完整项目有一个QGLwidget、窗口、十几个数据结构和~3000个语句,而且只有大约126Kb的时钟。我缺少某些设置或标志吗?这是.pro,而cpp是微不足道的且无Qt(基本上是getli

c++ - 模板特化 - MSVC 和 GCC/MinGW 之间的不同行为

我特化了一个模板,并在MSVC编译器和MinGW/GCC之间遇到了不同的行为。这是头文件://MyClass.h#ifndefMYCLASS_HEADER#defineMYCLASS_HEADERtemplateclassMyClass{public:virtualvoiddoSomething(){//somecode}};//specializationprototypehere#endif现在,区别。为了避免多次定义,我只在头文件中特化了一个原型(prototype),实现在一个cpp文件中。特化是个问题。GCC/MinGW编译器只接受这个:templatevoidMyClass