mingw64下编译GLFW的Win64版本

     2023-02-21     51

关键词:

【中文标题】mingw64下编译GLFW的Win64版本【英文标题】:Compiling Win64 versions of GLFW under mingw64 【发布时间】:2012-04-28 03:46:45 【问题描述】:

首先,我真的需要制作一个 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 就在那里)。

【问题讨论】:

【参考方案1】:

我还不允许添加 cmets,所以我会发布这个作为答案。

您遇到的问题是由于 GLFW 中的三个单独的错误造成的。我今天修复了它们,这些修复将包含在 GLFW 2.7.6 中。在此之前,您可以使用来自GLFW Subversion repository 的中继。

【讨论】:

在最新版本的 Go、GLFW 和 Mingw-w64 中,现在一切正常。再次感谢!【参考方案2】:

要确保您确实没有使用 opengl32.dll、glu32.dll、glut32.dll 等的 DLL 地狱问题,请查看事件查看器工具,看看您的应用程序是否有一些警告或错误。

这是我的想法,因为您只能运行与“真正的”OpenGL API 毫无共同之处的 mtbench 和 mthello。

虽然没有关于particle.exe 的线索——也许GLFW 在内部检查错误并调用exit() 例程?还要检查 %errorlevel%。

也看看这里: http://glfw.svn.sourceforge.net/viewvc/glfw/trunk/examples/pong3d.c?revision=1110&view=markup

如果“!glfwGetWindowParam( GLFW_OPENED )”有一个GameMenu()函数可能静默退出,这显然意味着OpenGL 没有初始化。

同样的函数在这里用作退出标志 http://glfw.svn.sourceforge.net/viewvc/glfw/trunk/examples/wave.c?revision=1110&view=markup

再次仔细检查 DLL!

我相信您在构建过程中不会犯“高级”错误,所以在“用户级别”可能会发生一些有趣的事情。

还有一个建议: http://sourceforge.net/projects/glfw/forums/forum/247562/topic/3868944

某些参数可能不完全适合您。

要“修复”示例,请尝试注释掉 glfwGetWindowParam 调用。

【讨论】:

实际上我的问题选择不当——真正的问题是构建本身没有按预期完成。除了提到的 4 个示例之外,我确实收到了所有条目符号警告。所以难怪他们不工作。在制作过程结束时也会出现链接器错误,因此尽管确实构建了库,但它们必须在开始时有些错误的构建。在一个单独的线程中跟进此问题,并在 GLFW 的跟踪器中提交了一个问题。不过,感谢您的指点,那里仍然有有用的知识! 好的。无论如何,在 Win32 中使用 GCC 风格编译/构建总是接近噩梦 :) 我自己从不喜欢 cygwin/msys :) 我总体上对 Go 非常满意,但是因为他们选择 gcc 作为 C 互操作 - 我对这部分别无选择。 :) 顺便说一下,particles.exe 是唯一使用 -mconsole 而不是 -mwindows 编译/链接的 (GUI) 示例应用程序。因此这里没有条目符号问题。

如何在win7下编译openssl?

编译环境:win7x64openssl1.1.0vs2015ActivePerl-5.24.3.2404-MSWin32-x64-404865执行命令:修改configdata.pmmakefile文件,搜索/MD,全部修改为/MT即,静态编译perlconfigureVC-WIN32nmakenmakeinstall编译结果:老版本的对应新版本的libeay32.dll、ssleay32.dll 查看详情

win10环境下编译和运行x264(代码片段)

花了整整一天时间终于做完了1.MSYS2的下载和安装1.1下载官网有下载和安装流程https://www.msys2.org/1.2安装双击安装,然后一直点下一步即可。最后,点击确定后是下面这个样子1.3安装mingw-64pacman-Smingw-w64-x86_64-gcc安装成功后&#x... 查看详情

在mingw环境下编译assimp

  使用的assimp库的版本为4.0.1,而CMake的版本为3.8.2。配置好sourcecode和buildthebinaries的路径后,点击configure,选择【MingWMakefiles】以及【nativecompilers】选项。  先是报一堆dll找不到的问题。到mingw安装目录下搜索对应的... 查看详情

win7旗舰版64位下编译32位的带cgo的golang程序

 开发过程中,遇到一个问题。客户服务器端为32位Windows系统,软件系统必须编译成32位系统才能在客户端正常运行。本人开发环境: Win7旗舰版64位Golang1.864位TMD-GCC5.164位  在此情况下,使用批处理文件如下:setGOOS=... 查看详情

win10系统下编译geos3.6.2

环境说明1、Win10专业版、64位;  2、VS2012旗舰版;3、cmake-3.9.0、64位;资源准备GEOS管网(http://trac.osgeo.org/geos)下载3.4.3版本,解压到F:OSGgeos,并在里面新建一个build文件夹,用来存放编译文件。安装源码1、将F:OSGgeos目录... 查看详情

mingw构建gdal2.1.2(代码片段)

...mingw编译gdal的一些问题,然后我简单的编译了一次,记录下编译过程。此文是2017年5月写的,当时存在草稿箱,今天才看到。也许已经不适用于当前最新的版本了。1、准备1、安装mingw,我安装的是mingw-w64的x86_64-7.1.0-win32-seh-rt_v5-r... 查看详情

如何在windows下编译openssl

解压缩OpenSSL包,在对它进行修改便可以编译了。在解压缩后,所有的源代码放在openssl-1.0.1e目录下,在此目录下,有两个文件INSTALL.W32,INSTALL.W64需要被关注。打开其中的任何一个文件,你会看到如何编译OpenSSL的各个步骤。1)打... 查看详情

debian下编译安装poco

系统环境:debian版本:Linuxlocalhost.localdomain3.10.0-862.14.4.el7.x86_64#1SMPWedSep2615:12:11UTC2018x86_64x86_64x86_64GNU/Linuxpoco版本:poco-1.9.0-all.tar.gz 安装是在docker环境下新建debian环境进行的。经过多次测试,亲测成功。首先需确保机 查看详情

windows下编译iconv

从http://www.gnu.org/software/libiconv/ 下载 libiconv-1.11.1,这是最后一个支持MSVC编译的版本。编译64位Lib命令行cmd执行amd64位脚本,D:ProgramFiles(x86)MicrosoftVisualStudio8VCinamd64vcvarsamd64.bat转移到libiconv-1.11. 查看详情

无法在 Win32 发布模式下编译 Qt 应用程序

】无法在Win32发布模式下编译Qt应用程序【英文标题】:CannotcompileQtapplicationinWin32releasemode【发布时间】:2014-03-0620:44:49【问题描述】:我有VS2012和QT插件。我可以在releasex64模式下编译,但是当我将设置更改为Win32并编译时,出现... 查看详情

OpenBLAS + MinGW64 静态链接?

...布时间】:2014-05-1601:23:53【问题描述】:我可以在MinGW64下编译Armadillo+OpenBLAS,但是链接是通过“libopenblas”,我相信它是dll。在Ubuntu下,我可以通过我认为是静态的“openblas”进行链接。在windows下,当我切换到“openblas”时,我... 查看详情

win64下编译osg详细过程(win10+vs2015+osg3.6.3)(代码片段)

目录1.数据资源准备2.编译第三方库3.编译GDAL4.编译OSG1)CMAKE_INSTALL_PREFIX:2)BUILD_OSG_EXAMPLES/BUILD_MFC_EXAMPLE:3)ACTUAL_3RDPARTY_DIR4)BUILD_DOCUMENTATION5)编译过程的问题6)安装5.测试环境6.资源下载7.参考文献1.数据资源准备在OSG官方网站上下载最... 查看详情

如何在 Windows 上编译 64 位版本的 ffmpeg?

】如何在Windows上编译64位版本的ffmpeg?【英文标题】:HowdoIcompilea64-bitversionofffmpegonWindows?【发布时间】:2010-01-1414:36:30【问题描述】:我需要为windows编译ffmpeg(64位共享dll)。但是我在mingw中配置,它总是为我生成32位二进制文... 查看详情

基于ubuntu编译windows版adb

.....adb的源码在Android源码树中,所以只能在Linux下编译,而在Linux下编译windows版本的应用就需要使用交叉编译器MinGW了。环境:Ubuntu16.04Android4.3r2>$uname-aLinuxyuhuashi-Linux4.4.2#2SMPSunFeb2121:38:05CST2016x86_64x86_64x86_64GNU/Linux>$编 查看详情

[crosscompile]cygwin和mingw

Unix下编译通过的C代码,在win32下编译是不能通过的,当然Unix和win32的API都是符合标准C,也就是说,大多数函数调用在unix和win32下是相同的.但是,unix有自己一些独特的API(如fork,spawn,signals,select,sockets等),如果代码中使用了这些API,在win3... 查看详情

UInt64 和“在检查模式下编译时操作溢出” - CS0220

】UInt64和“在检查模式下编译时操作溢出”-CS0220【英文标题】:UInt64and"Theoperationoverflowsatcompiletimeincheckedmode"-CS0220【发布时间】:2012-04-2709:00:25【问题描述】:这感觉像是一个愚蠢的问题,但我似乎看不到答案。我有一... 查看详情

帮助在 Win7-64 上通过 mingw32 或 mingw-64 安装 ECL (Embeddable Common Lisp)

】帮助在Win7-64上通过mingw32或mingw-64安装ECL(EmbeddableCommonLisp)【英文标题】:HelpwithinstallingECL(EmbeddableCommonLisp)viamingw32ormingw-64onWin7-64【发布时间】:2010-10-0305:37:22【问题描述】:我正在尝试在我的Win764位机器上编译ECL10.4.1,但遇到... 查看详情

cygwin和mingw的区别

...网上看了些资料,在这里复制粘贴一下,以备后查。Unix下编译通过的C代码,在win32下编译是不能通过的,当然Unix和win32的API都是符合标准C,也就是说,大多数函数调用在unix和win32下是相同的.但是,unix有自己一些独特的API(如fork,spawn,s... 查看详情