标签: mingw

什么是"堆栈对齐"?

什么是堆栈对齐?为什么用它?可以通过编译器设置来控制吗?

这个问题的细节来自于尝试将ffmpeg库与msvc一起使用时遇到的问题,但我真正感兴趣的是对"堆栈对齐"的解释.

细节:

  • 当runnig我的msvc编译程序链接到avcodec我得到以下错误:"编译器没有对齐堆栈变量.Libavcodec已被错误编译",随后avcodec.dll崩溃.
  • avcodec.dll没有用msvc编译,所以我无法看到里面发生了什么.
  • 运行ffmpeg.exe并使用相同的avcodec.dll时一切正常.
  • ffmpeg.exe没有用msvc编译,它符合gcc/mingw(与avcodec.dll相同)

谢谢,

c++ compiler-construction mingw visual-c++ data-structures

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

从MinGW静态库(.a)到Visual Studio静态库(.lib)

我正在尝试使用xlsLib从C++应用程序创建Excel电子表格.

麻烦的是编译xlsLib,我给了一个.a文件(由MinGW生成的GCC静态库).但是,我的应用程序依赖于另一个PhysX仅使用Visual Studio编译的API().

因此:是否可以将GCC静态库(xlslib.a)转换为Visual Studio静态库文件(xlslib.lib)?

static mingw visual-studio

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

无法使用CMake指定编译器

我有这个CMakeLists.txt文件的问题:

cmake_minimum_required(VERSION 2.6)

SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc)
SET(CMAKE_CXX_COMPILER C:/MinGW/bin/g++)

project(cmake_test)

add_executable(a.exe test.cpp)
Run Code Online (Sandbox Code Playgroud)

使用:调用cmake cmake -G "MinGW Makefiles",它失败并显示以下输出:

c:\Users\pietro.mele\projects\tests\buildSystem_test\cmake_test>cmake -G "MinGW Makefiles" .
-- The C compiler identification is GNU 4.6.1
-- The CXX compiler identification is GNU 4.6.1
-- Check for working C compiler: C:/MinGW/bin/gcc
CMake Error: your C compiler: "C:/MinGW/bin/gcc" was not found.   Please set CMAKE_C_COMPILER to a valid compiler path or name.
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Check for working C …
Run Code Online (Sandbox Code Playgroud)

gcc mingw cmake

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

Cygwin:如何实际使用gcc-mingw

由于"gcc -mno-cygwin"不再起作用,我一直在寻找一种方法来在我的Cygwin环境中运行一个以MinGW为目标的GCC.(此时不能运行MSYS环境.)

Cygwin安装程序提供了一个"gcc-mingw"软件包,其中包括:

lib/gcc/i686-pc-mingw32/3.4.4/cc1.exe
lib/gcc/i686-pc-mingw32/3.4.4/collect2.exe
lib/gcc/i686-pc-mingw32/3.4.4/crtbegin.o
lib/gcc/i686-pc-mingw32/3.4.4/crtend.o
Run Code Online (Sandbox Code Playgroud)

缺少的是"gcc"前端.那么,我该如何实际调用这个编译器呢?我希望不必手动通过"cc1",对吗?

我用Google搜索,但找不到与此主题相关的任何内容......

gcc cygwin mingw

40
推荐指数
1
解决办法
4万
查看次数

让Clang在Windows上工作

我已经按照以下一步一步的指南进行了操作,经过一些小小的尝试后,我已经设法使用代码编译clang:blocks和MinGW.太好了,所以现在我可以将Clang模块添加到eclipse(为什么有一个IDE,当你可以有四个)并开始编译.

我可以编译一个不使用标准库的简单程序,但不幸的是,当我尝试编译它时:

#include <iostream>
using namespace std;

int main()
{
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

首先我得到这个:

..\src\test.cpp:9:10:致命错误:找不到'iostream'文件

所以我将Mingw标题添加到include路径; 然后我明白了:

'致命错误:'找不到位/ c ++ config.h'文件'

这很奇怪.如果该文件不在'bits /'中,为什么MingW会工作?它是内置于编译器吗?没关系,我找到它的实现并在'bits /'中创建文件.

然后我得到了一大堆错误,包括奇怪的错误,似乎暗示clang没有正确实现预处理器,否则我对预处理器的理解是不正确的.

C:\Program Files\CodeBlocks\MinGW\lib\gcc\mingw32\4.4.1\include\c++/cwchar:45:26: error: expected value in expression
#if _GLIBCXX_HAVE_WCHAR_H
Run Code Online (Sandbox Code Playgroud)

还有更多这样的人.应该是这样的

#if defined(_GLIBCXX_HAVE_WCHAR_H) 
Run Code Online (Sandbox Code Playgroud)

要么

#ifdef _GLIBCXX_HAVE_WCHAR_H?
Run Code Online (Sandbox Code Playgroud)

如果他们是MinGW标准库是错误的.

我假设我错误地认为可以放入clang替换gcc并且它不适用于gnu标准库.任何确认或否认这一点,以及证据支持将是最受欢迎的!

那么,有没有人有一个万无一失的方法来在Windows PC上进行clang编译?网上有关于铿锵声的信息,特别是关于窗户的信息.

我真的很想让clang和LLVM工作,因为它们从我读过的内容中听起来很棒.任何帮助,将不胜感激.

谢谢.

c++ mingw eclipse-cdt codeblocks clang

40
推荐指数
4
解决办法
5万
查看次数

结合mingw和git

我在D:\ mingw中安装了MinGW.我的Git用C安装:\ Program Files文件\饭桶.我想使用MinGW开发/编译并使用git进行版本控制.

我想我必须使用正确的路径,但有些路径是硬编码的.像msys mount脚本调用/bin/msysmnt.exe一样

所以我有两个选择:1.使用git的shell(能够在提示符下显示分支)2.使用mingw(msys)的shell - 拥有正确的路径

无论我选择哪个,我必须使其他功能在其下工作.

git shell mingw

39
推荐指数
5
解决办法
4万
查看次数

MinGW的简单解释

我是一个狂热的Python用户,似乎我需要在我的Windows机器上安装MinGW来编译一些库.我对MinGW和GCC有点困惑.这是我的问题(从真实的虚拟观点来看):

所以Python是解释和编译的语言.有Linux的Linux和Windows实现,只需安装并使用二进制文件来执行他的代码.它们捆绑了一堆你可以使用的内置库.我读过的内容与Ruby相同.

现在,我已经完成了C的一小部分,我知道有人可以编译它.它有自己的内置库,可以使用它们称为头文件.现在,回到学校的那天,C,正在一个名为Turbo-C的vi类IDE中编写代码,然后按F9编译它.这几乎是我的C教育结束的地方.

什么是MinGW,什么是GCC?我一直主要研究Windows系统,甚至最近开始使用Cygwin.他们不一样吗?

对这些区域进行简单解释会有所帮助.

(如果这篇文章听起来很愚蠢/愚蠢,我很抱歉.我以为我会问这里.忽略这些核心位从来没有让任何人成为更好的程序员.)

感谢大家.

c windows gcc cygwin mingw

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

如何在C++预处理器中检测g ++和MinGW?

我想做的事情如下:

#ifdef GCC
#define GetFunctionName() string("My function name is ") + __PRETTY_FUNCTION__;
#endif
Run Code Online (Sandbox Code Playgroud)

由于我想使用漂亮的PRETTY_FUNCTION,据我所知只有gnu支持所以我需要检测我是否正在编译g ++和MinGW,我该怎么做?我猜我需要知道的是编译器的预处理器定义,就像我在下面为Microsoft做的那样.

#ifdef WIN32
#define LogFuncBegin() gLogger.FuncBegin( __FUNCTION__ );
#define LogFuncEndSuccess() gLogger.FuncEndSuccess( __FUNCTION__ );
#endif
Run Code Online (Sandbox Code Playgroud)

如何在C++预处理器中检测g ++和MinGW?

c++ gnu mingw g++ c-preprocessor

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

尽管使用相同的固定长度数据类型,C 程序在不同的机器上产生不同的结果

我在尝试 inttypes.h 时编写的简单程序:

#include <stdio.h>
#include <stdbool.h>
#include <inttypes.h>

bool get_bit(uint32_t x, uint8_t n) {
    x >>= n;
    return x & 1;
}

int main() {
    uint32_t x;
    uint8_t n;

    printf ("Enter x: ");
    scanf("%"SCNu32, &x);

    printf ("Enter n: ");
    scanf("%"SCNu8, &n);

    printf("The %"PRIu8"th bit of %"PRIu32" is: %d", n, x, get_bit(x, n));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我的手机(64 位八核 ARN LTE Soc Android 10)上,它工作正常:

Enter x: 1
Enter n: 0
The 0th bit of 1 is: 1
Run Code Online (Sandbox Code Playgroud)

但在我的计算机(64 位 x86 Windows …

c windows mingw scanf c99

37
推荐指数
1
解决办法
2412
查看次数

MinGW sh.exe不得在您的路径中

目前正在尝试使用MinGW在Windows上设置我的C开发环境,看起来CMAKE给了我以下错误:

sh.exe was found in your PATH, here:
C:/Program Files/Git/user/bin/sh.exe
For MinGW make to work correctly sh.exe must NOT be in your path.
Run cmake from a shill that does not have sh.exe in your PATH.
If you want to use a UNIX shell, then use MSYS Makefiles
Run Code Online (Sandbox Code Playgroud)

该错误正在CLION IDE中抛出.我不确定我是否需要更改CLion内部的设置或者什么.我查看了我的Windows路径,但没有看到任何对sh.exe的引用.

我的路径如下:

C:\Program Files (x86)\Razer Chroma SDK\bin;C:\Program Files\Razer Chroma SDK\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Nodist\bin;C:\Users\wesle\AppData\Local\Microsoft\WindowsApps;
Run Code Online (Sandbox Code Playgroud)

windows mingw cmake clion

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