Win10 x64+VS2013编译OpenGL程序用于WinXP系统运行方法——以库GLFW 3.2.1中gears为例

本文主要是介绍Win10 x64+VS2013编译OpenGL程序用于WinXP系统运行方法——以库GLFW 3.2.1中gears为例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我最近玩OpenGL探索有得,以飨大家。

GLFW是一个用于OpenGL编程的C语言库,可下载或自行用源码编译出glfw3.lib。

怎样编译出能在WinXP系统运行的OpenGL程序?下面以GLFW库中自带的例子gears为例:
这里写图片描述

打开Release配置或者MinSizeRel,我这里是MinSizeRel。

  1. 设置平台工具集。
    这里写图片描述

  2. 设置运行库。
    这里写图片描述
    这里要从/MD改成/MT,区别在于MD是要依赖msvcr120.dll的,在WinXP原生系统中会报错“缺少DLL”。而MT则相反,所以MT编译的程序要大一点点。

之后链接器可能会报错,因为glfw3.lib是用/MD编译的。解决方法为打开glfw项目,按照前述1,2点进行设置,编译出glfw3.lib。

好,现在编译gears,得到exe,214KB,打开,运行正常。
这里写图片描述

虚拟机打开WinXP系统,拷进去,运行正常。
这里写图片描述

关于“不是有效的Win32应用程序”错误:
我发现自己写的用glfw库的程序按如上操作生成exe,在XP系统报错“不是有效的Win32应用程序”。解决方法为在 链接器 - 系统 里设置 子系统 为 控制台 (/SUBSYSTEM:CONSOLE)。之后在XP系统下可以打开程序弹出控制台,但是报错Fail to create glfw window。之后再解决吧。

参考文献
1. 这篇写运行库设置非常详细:
MT,MTd,MD,MDd详解解决 MSVCRTD.LIB和LIBCMTD.LIB冲突
2. 这篇简要提到了/MT和/MD的效果区别:
去除对MSVCR120.DLL的依赖
3. 这篇重点提到所有链接到的库运行库设置都必须一样:
LIBCMT.lib : error LNK2005

这篇关于Win10 x64+VS2013编译OpenGL程序用于WinXP系统运行方法——以库GLFW 3.2.1中gears为例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/909355

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据