问题标签 [mingw-w64]

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 投票
2 回答
11284 浏览

bash - 尝试执行“as”时出错:execvp:没有这样的文件或目录

尝试构建时出现此错误:

0 投票
3 回答
12367 浏览

python - 如何为 Windows 获取预构建的 *debug* 版本的 Python 库(例如 Python27_d.dll)

首先声明一下,我目前的开发环境是Windows 7下的MSYS + mingw-w64 + ActivePython,平时我主要是Linux开发者。我不高兴获得或编译带有调试符号的 Python 库版本。

理想情况下,我需要Python27.dll文件的32 位和 64 位调试版本。我希望能够在 C++ 中嵌入 Python 并实现 Python 扩展,并且能够使用我为 mingw-w64 构建的gdb-7.4和用于纯 Python 方面的 WingIDE 调用无缝调试工具。

事实证明,使用我的 mingw-w64 工具链从源代码构建Python 2.7.3太成问题了——在有人因为我的尝试而发火之前:我承认这个环境不受支持,但我认为我可以通过一些明智的选择来解决这个问题补丁(黑客)和:

make OPT='-g -DMS_WIN32 -DWIN32 -DNDEBUG -D_WINDOWS -DUSE_DL_EXPORT'

我错了...我放弃了 posixmodule.c,因为我的更改的影响变得不确定;ymmv。

我曾尝试使用Visual C++ 2010 Express进行构建,但作为一名主要的 Linux 开发人员,我今天无法承受文化冲击;Python 项目甚至没有成功导入。显然,我需要 Visual C++ 2008,但我已经确信,如果可能的话,我不想走这条路……

令我惊讶的是,在 Internet 的某个地方没有提供必要的 .dll 的 zip 文件。ActiveState 确实应该在他们制作的每个 ActivePython 版本中将这些作为可选下载提供——也许这就是付费支持的来源;-)。

给定我的环境,获取 Python 调试库文件的最佳方法是什么?

0 投票
1 回答
1640 浏览

opengl - Windows DLL 链接与 cgo

我的最终目标是从 Go 包中成功链接到多个 DLL(opengl32.dll glfw.dll 和 glu32.dll)——但尝试链接到 go-glfw 包给了我“未定义”错误

所以我决定从 %GOROOT%\misc\cgo\life 中的简单未修改示例中获取一个非常简单的 cgo 动态/共享库链接来工作。但只是调用命令go build -o life main.go失败,并出现基本相同的链接器错误,即:

“未定义”...与我在尝试按照上述链接 glfw 时遇到的错误完全相同。

这是今天早上刚下载的 Go 1.0.1 的全新未篡改安装,安装在一个普通的、相当新的 Win7 64 位安装上。什么可能出错?我知道... Windows。很想听听任何想法……从我在网上阅读的内容来看,与 CGO 链接的 DLL 似乎是一件轻而易举的事情。然而,即使是最简单的例子对我来说也失败了。

0 投票
2 回答
945 浏览

gcc - mingw64下编译GLFW的Win64版本

首先,我真的需要制作一个 64 位版本的 glfwdll.a 和 glfw.dll (所以我希望最终能够成功地让 Go glfw 绑定在 Windows 下工作......在 Linux 下轻而易举!)

似乎我现在使用 mingw64、MSYS 及其 make 脚本成功编译了 64 位版本的 glfwdll.a 和 glfw.dll,即使我确实收到了一些错误消息,如“找不到 maincrt 入口点,使用默认 0xsomehexnumber相反”或类似的。入口点当然是指可执行文件,在这种情况下是示例目录中的那些。

事实上,它们中的大多数都不起作用!然而,一切都建成了。以下可执行文件有效:

listmodes.exe mtbench.exe mthello.exe 和particle.exe - 后者是唯一为我工作的图形(3d gfx)示例(前者只是将一些测试信息输出到控制台窗口)。

现在其他的有什么问题?它们不会崩溃,它们不会向控制台报告任何内容……我运行它们,它们会立即返回,无声无息。

我的 GLFW 构建是否损坏?怎么修?4 个有效的示例和其他无效的示例之间的最大区别是什么?

这是一个相当新的、普通的 Win7 64 位安装。没有垃圾软件,一切都是最新的,UAC 和主题都关闭了,根本没有安装很多软件,更新了 Nvidia GPU 驱动程序(GPU Caps Viewer 等运行良好,所以 OpenGL 就在那里)。

0 投票
2 回答
1501 浏览

opengl - OpenGL 的 glClear() 导致 Windows 64 中的访问冲突 (0xc0000005)

看看这个用 Go 编写的超级简单的小测试用例 OpenGL 程序:

这在带有 Go 1.0.1 64 位的 Windows 7 64 位下构建良好。

如果您取出(或注释掉)gl.Clear(gl.COLOR_BUFFER_BIT)行,它也可以正常工作(OpenGL 绘制一个彩虹色的 2D 三角形,直到窗口关闭) 。

但是,只要调用 gl.Clear(无论传递什么参数),它都会崩溃,Windows 会通知我“glfw-win.exe 已停止工作......”并且 Windows 事件查看器为我提供以下错误日志:

现在,有几个值得注意的点...

  1. glfw包只是一个自定义包,它公开与github.com/jteeuwen/glfw完全相同的 API,但在内部使用 LoadLibrary/GetProcAddress 来使用 glfw.dll 而不是编译时 CGO/GCC/LD 链接——因为后者不能可悲的是,它可以在 64 位 Windows 中工作,不确定是 mingw64 还是 gcc 还是 cgo 是罪魁祸首。使用 LoadLibrary/GetProcAddress 调用我的 glfw.dll 的自定义 64 位版本运行良好。显然这里的问题是调用 gl 包,而不是 glfw。

  2. gl包确实就是这个,未经修改。我尝试了一些 LDFLAGS 修改,例如 -m64 -lmingw32 -Wl,/windows/opengl32.dll 等,但没有区别,只要不调用 gl.Clear(),原始工作与修改后的工作一样好,所以我恢复到原来的。当然,稍后我将继续使用 OpenGL 4.2。

  3. 使用 Process Explorer,我可以看到我的进程是 64 位的,并且所有加载的 DLL 也是 64 位图像(包括 opengl32.dll 和 glfw.dll)。

  4. “难道是gl21包无法为opengl32.dll导出的glClear()函数获取有效地址?” -- 不太可能:根据第 2926 行,如果是这种情况,我对 gl.Init() 的调用将失败。

  5. GPU驱动问题?更不可能了。安装了最新的官方 nVidia Quadro 5010M 驱动程序 296.35。还尝试了“性能驱动程序”,但无论如何似乎是完全相同的驱动程序。根据 nVidia 控制面板的完整 OpenGL 4.2 支持(尽管 opengl32.dll 的日期为 2009 年——无论如何,我目前的目标是 2.1)。此外,“Geeks3D GPU Caps Viewer”和“Shader Toy Mark”中的 OpenGL 着色器运行,正如 GLFW 示例程序particles.exe 一样——它们都使用 glClear()。

  6. 使用 gl42 而不是 gl21 时会发生完全相同的问题,所以这也不是原因。

请注意在此示例中所有其他 gl.SomeExportedFunc() 调用如何不会崩溃...

该怎么做,如何进行?

如果这只发生在 gl.Clear() 而没有其他函数,我可以忍受这个——无论如何,我只是用自定义内容渲染全屏四边形——但我在这里测试 Win64 相当早(得到许多 gl42 代码在 Linux64 下工作得很好,现在即将“移植”到 Win64),我担心以后进一步的调用会暴露同样的问题,所以我现在报告这个。我很快就会发现哪些其他电话会受到此影响。

0 投票
1 回答
417 浏览

c++ - 在 Ubuntu 上使用 Mingw64 交叉编译 Matlab oct 文件时出现问题

我编写了一个 C++ 应用程序,其中包括外部库glpk和绑定到 Matlab API 的boost 。在使用 mex 在 Matlab 中编译的 Ubuntu 上工作正常,程序运行没有困难。

现在要在 Windows 平台上使用相同的应用程序,我想使用 Mingw64 交叉编译它。对应于这个线程,可以使用以下命令完成:

  • 路径/usr/local/include包含 boost 库的头文件(仅头库)
  • 路径/usr/include包含 glpk 库的头文件
  • 路径/usr/lib包含 glpk 库的源文件

但是运行此命令会给我以下conflicting declarations类型的错误:

似乎路径/usr/include会导致编译器出现问题。但是需要包含 glpk 头文件。有什么想法可以解决这个问题吗?

0 投票
2 回答
15071 浏览

gcc - 如何在 Cygwin 中使用 MinGW-w64?

至少从2010 年12 月起,Cygwin 就可以使用 MinGW-w64 。但是我很难用它来编译几乎任何东西。我已经设置了替代品的符号链接

例如,如果我尝试编译wget

错误(为简洁而编辑)

如果我使用

  • 带有 MinGW gcc 的 MinGW shell
  • Cygwin shell 与 Cygwin gcc ( gcc4-core)

然后 Wget 将编译。

基于 ak2 的答案,这似乎有效

0 投票
1 回答
1328 浏览

c++ - 在 MinGW 32 和 64 中包含来自 objcopy 的二进制 blob

我正在使用 objcopy 将文本文件转换为目标文件,以便使用 MinGW 和 MinGW-64 与我的 DLL 链接。使用 MinGW,一切正常,但使用 MinGW-64,我收到“未定义对 `binary_src_glsl_RGBtoHSV_glsl_end' 的引用”形式的错误。原始文件名为 RGBtoHSV.glsl,位于 binary\src\glsl 文件夹中。在 objcopy 的输出中,变量名称是 _binary_src_glsl_RGBtoHSV_glsl_end。我访问该文件变量的代码如下:

如果我更改变量名称以便它们在前面有一个下划线,例如:

然后在 MinGW-64 中找到该符号,但在 MinGW(32 位)中找不到。我确实尝试了 objcopy 的 --remove-remove-leading-char 选项,但这没有效果。据我所见,我的选择是在为 MinGW 32 位构建时使用“--prefix-symbol _”为 objcopy 生成的变量名称添加下划线,在这种情况下,上述变量名称将在 32和 64 位。

这个问题还有其他解决方案吗?理想情况下,我想要一些类似的东西

其中 fix_underscore_problem 是修复前导下划线问题的神奇命令。

更新 (2012-07-01):使用在 Win32 上使用 GCC 将前导下划线添加到程序集符号中给出的建议?我通过头文件更改为使用

这似乎解决了问题,但现在我想知道它的便携性如何。MSVC 或 C++ 标准方法中是否有等效的语法?

0 投票
2 回答
4822 浏览

c++ - 使用 mingw-w64 工具链时,发布模式下的正则表达式 Boost 库链接警告“重复部分具有不同的大小”

在发布模式下链接我的项目时,我收到以下警告:

我怀疑原因可能是 boost 库的编译选项与我用于项目的选项不同,但我不知道如何找到差异(boost 在构建期间没有输出这些选项)。

为了在 Ubuntu 12.04 上为 win32 编译 boost,我使用了这个过程:

为了在我的项目中编译文件,我使用类似的东西

我的测试表明正则表达式运行良好,但我仍然想解决警告。

编辑

我发现可以使用 bjam 的 cxxflags= 参数添加到 boost 编译器的附加选项。

示例:bjam cxxflags='-fPIC' ....

也许确保将与我相同的参数传递给项目可以解决问题(特别是与链接问题中建议的优化相关的参数)。

0 投票
0 回答
429 浏览

c++ - iostream 中缺少方法

我目前正在尝试做一些简单的 IO,但是我遇到了一些未解决的方法。

我目前正在使用 Mingw-w64,我已经签入了 MinGW\lib\gcc\x86_64-w64-mingw32\4.7.2\include\c++\fstream 并且它们用于 basic_ifstream 等成员。

(抱歉忘记编译)

错误1:

错误 2-4