问题标签 [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.
debugging - 如何调试 DLL 加载失败:对内存位置的访问无效
我有一个 MinGW64 编译的 DLL(python 模块),加载时会出错:
DLL 仅链接到 64 位库(Dependency Walker 证实了这一点)并具有调试符号。代码是相当复杂的 c++11(大约 30 个源文件),我不能一分为二。我已经用 MinGW64 成功地编译和测试了其他模块,工具链工作正常。
网络上的一些人报告了使用 SSE2 指令的代码错误(我的硬件支持这些指令,我没有明确使用它们)或从尚未初始化的全局变量中读取(有一些函数带有__attribute__((constructor))
, 但是根据我所阅读的内容,这些应该在 MinGW64 中工作得很好;更新:我删除了所有构造函数以确保它不是原因 - 它没有区别)。
有什么方法可以分析错误来自哪里?
我尝试了什么:
当我在调试器中加载 DLL 时(ctypes.WinDLL(...)
使用ntdll.dll
我还将目标文件与“hello world”可执行文件相关联,但是在打开文件时 gdb 已经崩溃Reading symbols from woomain.exe
(这是我的可执行文件):
c++ - 如何在 Windows 7 中安装 MinGW 64 位
我想在 Eclipse CDT 64 位中工作,我已经将它安装在我的机器上。但在那之后我才知道它需要 MinGW 才能工作。但是我没有找到任何可以知道如何设置 MinGW64 位的网站。任何指针都会对我很有帮助。
cygwin - 如何使 OpenMP 在 Cygwin 下与 MinGW-64 一起工作?
情景
我正在使用 C99 ANSI C 开发一个使用OpenMP和GMP的应用程序。它的自然栖息地将是具有大量内核的 linux 机器,所以那里基本上没有什么大问题,但由于我不想在这里讨论的原因,我必须在 64 位 Windows 机器上在 Cygwin 下开发。
当我使用 32 位版本的 gcc 时,某处出现了可怕的错误,并且应用程序比非常粗糙的单线程版本慢了大约 60 倍,而实际上它应该比 CPU 的数量更快. 它使工作变得不可能。我真的不知道是什么原因造成的;无论如何,我已经决定改用 64 位版本的 MinGW,x86_64-w64-mingw32-gcc-4.5.3
确切地说是和他的朋友。
附注:我确信减速不是我的多线程中的缺陷,多线程应用程序在 linux 机器上工作正常且速度更快。
实际问题
设置 GMP 很容易,它可以从源代码编译而没有任何麻烦,然后就像一个魅力一样工作。编译下面的简单示例-fopenmp
也很有魅力:
但是,执行它给了我
我知道这个问题,但我想在不下载任何二进制文件的情况下完成这项工作,而不是从官方 Cygwin 存储库下载任何二进制文件。由于我的示例是使用-fopenmp
switch 编译的,我相信这也应该是很有可能的。
有人可以帮我吗?提前感谢一堆。
c - 使用 MinGW-w64 出现错误
采取这个简单的程序
如果你用 Cygwin gcc 编译它运行良好
如果你用 MinGW-w64 gcc 编译它,它不会给出正确的错误信息
如何让 MinGW-w64 输入正确的错误消息?
cross-compiling - 我应该使用哪些路径来安装交叉编译的包?
我已将 MinGW-W64 安装到$HOME/mingw32
:
i686-w64-mingw32-gcc-4.7.1-2-release-linux64_rubenvb.tar.xz.tar
这是由于在我的 linux64 构建系统上为 windows32 主机提取和安装了交叉编译的各种软件。例如libpng
:
要使用已安装的工具,我必须添加$HOME/mingw32/i686-w64-mingw32/bin
到我的PATH
环境变量中。但是,我不愿意这样做,因为这个二进制目录包含
因此,我认为将交叉编译包安装到的正确位置可能是$HOME/mingw32
,这样我就可以省略添加$HOME/mingw32/i686-w64-mingw32/bin
到我的PATH
. 但是,这不起作用,因为./configure
当这些标头安装到$HOME/mingw32/include
. 当我将它们安装到 时$HOME/mingw32/i686-w64-mingw32/include
,它们被./configure
脚本找到了。
我需要做一些特别的事情来告诉交叉编译器$HOME/mingw32/include
作为内置包含路径吗?我的意思是,就像/usr/include
原生编译器内置的一样。
因此,我不确定要使用的正确前缀是什么。有人可以解释正确的路径和 and 的确切含义$HOME/mingw32/
吗$HOME/mingw32/i686-w64-mingw32
?
gfortran - 为什么在传递 -static 标志时 mingw-w64 gfortran 无法静态链接库?
免责声明:我对我的特定编译问题相当深入,但对编译世界还是很陌生。
背景: 我正在使用 Windows 7、64 位机器。我正在尝试使用 mingw-w64 编译一个相当大的 fortran 程序。编译过程由 SCONS(类似或源自 gnu Make)控制。我已经使用 g95 和 mingw gfortran 通过 scons 成功编译了这个程序。我曾尝试使用 mingw-w64 的 tdm-gcc 和 'ruben' 构建,但结果相同但不令人满意。我将 -static 参数传递给编译器(gfortran.exe)。我尝试使用 gfortran 和 x86_64-w64-mingw32-gfortran 编译命令,结果相同。
问题: 当尝试编译我的程序的 64 位版本时,尽管将 -static 参数传递给 gfortran 编译器,但当我尝试运行构建的可执行文件时,它会出错,声称找不到各种 dll(libgfortran、libgcc、 libquadmath,一般来说)。如果我将这些库复制到工作目录,则构建的程序运行时不会出错并按预期执行。
轶事总结: mingw-w64 gfortran 似乎忽略了 -static 编译标志
如果我可以提供任何其他信息来帮助解决此问题,请告诉我。
谢谢,JTJ
c++ - 使用 mingw 构建 Qt 5.0
有一些方法可以使用 mingw64 或 Visual Studio 2012 构建 Qt 5.0,还是我要等待下一个版本?我已经尝试在以下链接中使用 mingw64 构建 qt 5.0 的说明:http://qt-project.org/wiki/MinGW-64-bit但似乎我不适合我......有人编译了 Qt 5.0 mingw64(或 Visual C++ 2012)?
dbus - 在 64 位 Windows 上编译 DBus
好吧,在愚蠢的 Windows 平台上编译 Qt5 对我来说将是一场真正的噩梦。在第一步中,经过数小时的搜索,我遇到了一个非常奇怪的错误,我发现这是因为 .gitignore !为什么在源代码发布 tarball 中应该有一个忽略模式文件?win7拒绝创建一个没有名字的文件,所以我用msys的nano来制作它...
成功配置 Qt5 后,我安装了需求(OpenSSL、ICU 等)
然后我发现没有办法在 64 位窗口上运行 DBus。我尝试编译各种来源:DBus4Win、WinDBus、KDE4Win和来自 freedesktop.org 的原始 tarball。他们甚至都不会配置。配置脚本说没有找到 expat.h。我已经在 MSYS/mingw 中编译并安装了 expat。还尝试了 KDE4Win 项目的预编译库。它们很好,但没有调试 dll (编译以 -ldbus-1d 未找到的 ld.exe 错误终止)。发布了一个用于调试版本的 tarball,但它包含清单。
您是否曾经在 64 位 Windows 上成功编译带有 DBus 支持的 Qt?如何?
dll - 从 .sym 文件生成 .dll?
我有一个使用 MinGW 从 C/C++ 代码编译的 .a 存档。我还在许多 .sym 文件中导出了符号。现在我需要从它们的组合中生成一个 .dll 文件。我已经安装了 MSYS/MinGW w64
windows - 想要在 Windows 上移植现有的 rsync
我知道目前有用于 Windows 的 rsync 作为 G-Rsync。就是这样:- http://sourceforge.net/projects/grsync-win/
但是,我想做的只是让现有的 rsync 代码从这里可用:- https://rsync.samba.org/download.html 在 Windows 上运行。
我已经检查过:- https://stackoverflow.com/questions/528298/rsync-for-windows 但是,这不是我想要的。另外,我发现https://github.com/MatthewSteeples/rsync.net rsync 端口到 .net。
此外,Windows 使用 WinSock 而不是套接字系统调用(因此,我无法从头开始为 Windows 编写整个 rsync)。所以,我在这里检查了 MingW-w64:- http://mingw-w64.sourceforge.net
我想一定有一些方法可以将现有的 rsync 代码移植到 Windows。此外,以下链接对我没有帮助:- Win32 rsync 端口的技术障碍
我不太确定这个 MingW-w64 是否对我有帮助。我可以使用这个工具在 Windows 上移植现有的 rsync。我也想知道,MingW-w64是干什么用的?另外,如果我在这里遗漏任何东西,请通知我。
[编辑] 我找到了这些项目
https://github.com/meeuw/rsync-mingw32 (找不到该项目的文档,readme.txt 与 rsync 相同)。
http://sourceforge.net/projects/mingw/files/MSYS/Extension/rsync/rsync-3.0.8-1/ (这需要MSYS控制台来配置MSYS-build-rsync)。
但是,无法弄清楚这些选项是否符合我的目的?
谁能评论一下上面提到的这两个项目是关于什么的?
提前致谢。