VS2008 - debug版 - 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。

文章目录

    • VS2008 - debug版 - 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。
    • 概述
    • 笔记
      • VS2008安装环境
      • VS2008测试程序设置
      • 默认报错的情况
      • 措施1
      • 措施2
      • 备注 - exe清单文件的问题
      • 是否使用静态库?
      • _BIND_TO_CURRENT_VCLIBS_VERSION的出处?
      • 将VS2008生成的程序在winxpSp3上运行的几种方法的比较
      • 备注
      • 备注 - 如果不是刚需,可以用VS2013
    • END

VS2008 - debug版 - 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。

概述

装完VS2008, 写个测试程序,试试是否可以正常在winxpSp3上用。
只将exe拷贝过去,报错如下:

---------------------------
C:\Documents and Settings\lostspeed\桌面\test\test_winxp_vs2008.exe由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。---------------------------
确定   
---------------------------

采取了2个措施,报错消失,可以正常运行。

笔记

VS2008安装环境

win10x64, 安装顺序如下,只安装vc++.
在这里插入图片描述

VS2008测试程序设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完全编译

默认报错的情况

在这里插入图片描述

措施1

在顶层头文件中加入宏 _BIND_TO_CURRENT_VCLIBS_VERSION
在这里插入图片描述
WINVER版本虽然不是0x0501, 先不管他。
将exe拷贝到winxpSp3中运行。
在这里插入图片描述
看到报错信息还是一样,并没有说缺啥DLL.

措施2

拷贝exe依赖的VS2008的DLL, 针对这个测试程序,就只拷贝DEBUG版的DLL, 具体可以用depend去看。
这个默认的测试程序,没有使用MFC/ATL, 且是debug/win32, 那么只拷贝VS2008 debug/x86的DLL到winxpSp3就行。

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT

在这里插入图片描述
将这4个东西(DLL和清单文件),都拷贝到winxpSp3中。
在这里插入图片描述
可以看到,这回就正常了。

备注 - exe清单文件的问题

默认的清单文件嵌入在exe内部。
在这里插入图片描述

是否使用静态库?

如果没有特殊需求,当然不能采用静态库。
因为程序大了之后,不可避免的会用第三方库,人家大多数都会使用动态库。
如果将整个程序都改为静态库包含,不现实。

_BIND_TO_CURRENT_VCLIBS_VERSION的出处?

_BIND_TO_CURRENT_VCLIBS_VERSION 并没有MS官方文档说明,不知道是哪个大神第一次采用这种方法,第一个用这个宏的一定是MS内部的人,要不谁知道有这东西?

仅在VS2008的头文件crtassem.h中可以看到这个宏大概干了啥。
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\crtassem.h

在这里插入图片描述
能大致知道,VS2008有2个版本的DLL, 一个是VS2008原版用的,一个是VS2008SP1打补丁之后的版本。
那么大致知道,在工程中是否定义这个宏,就指定了使用哪个版本的DLL.
也许是使用了这个宏,对DLL版本的要求就不那么严。

将VS2008生成的程序在winxpSp3上运行的几种方法的比较

在这里插入图片描述
首先排除使用静态链接,各种弊端。
如果是让debug版程序到winxpSp3上运行,就定义宏。
如果是release程序到winxpSp3上运行,就安装VS2008发行包,再运行我们自己的程序就正常。

备注

这个问题,也在网上查了一下,好多同学都是各种原因,各种解释,看的脑袋疼。
自己试验后,发现就多做这2步,就清净了。
可能因为VS2008出的比较早,报错信息也就不那么明确,这个报错看的人一愣一愣的。

备注 - 如果不是刚需,可以用VS2013

可能是因为VS2008出的比较早,非要在工程中定义宏来让DLL版本依赖宽松一些。
VS2013做的比较好(没有UCRT补丁依赖,原生支持winxpsp3),工程不用定义宏,只要工具链采用xp链,编译完,将DLL拷贝全后,在winxpsp3中直接正常用。

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/10026.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将DeepSeek部署到本地电脑

DeepSeek爆火,如何免费部署到你的电脑上?教程来了,先在你的本地电脑上安装Ollama,然后在Ollama搜索选择DeepSeek模型,即可成功在你的本地电脑上部署DeepSeek 一、安装Ollama 打开Ollama官网:https://ollam…

[Java]泛型(一)泛型类

1. 什么是泛型类? 泛型类是指类中使用了占位符类型(类型参数)的类。通过使用泛型类,你可以编写可以处理多种数据类型的代码,而无需为每种类型编写单独的类。泛型类使得代码更具通用性和可重用性,同时可以保…

模型I/O功能之模型包装器

文章目录 模型包装器分类LLM模型包装器、聊天模型包装器 截至2023年7月,LangChain支持的大语言模型已经超过了50种,这其中包括了来自OpenAI、Meta、Google等顶尖科技公司的大语言模型,以及各类优秀的开源大语言模型。对于这些大语言模型&…

【漫话机器学习系列】067.希腊字母(greek letters)-写法、名称、读法和常见用途

希腊字母(Greek Letters) 希腊字母在数学、科学、工程学和编程中广泛使用,常用于表示变量、常量、参数、角度等。以下是希腊字母的完整列表及其常见用途。 大写与小写希腊字母表 大写小写名称(英文)名称(…

JxBrowser 7.41.7 版本发布啦!

JxBrowser 7.41.7 版本发布啦! • 已更新 #Chromium 至更新版本 • 实施了多项质量改进 🔗 点击此处了解更多详情。 🆓 获取 30 天免费试用。

AI在自动化测试中的伦理挑战

在软件测试领域,人工智能(AI)已经不再是遥不可及的未来技术,而是正在深刻影响着测试过程的现实力量。尤其是在自动化测试领域,AI通过加速测试脚本生成、自动化缺陷检测、测试数据生成等功能,极大提升了测试…

单片机基础模块学习——超声波传感器

一、超声波原理 左边发射超声波信号,右边接收超声波信号 左边的芯片用来处理超声波发射信号,中间的芯片用来处理接收的超声波信号 二、超声波原理图 T——transmit 发送R——Recieve 接收 U18芯片对输入的N_A1信号进行放大,然后输入给超声…

蓝桥杯之c++入门(一)【C++入门】

目录 前言5. 算术操作符5.1 算术操作符5.2 浮点数的除法5.3 负数取模5.4 数值溢出5.5 练习练习1:计算 ( a b ) ⋆ c (ab)^{\star}c (ab)⋆c练习2:带余除法练习3:整数个位练习4:整数十位练习5:时间转换练习6&#xff…

Redis --- 分布式锁的使用

我们在上篇博客高并发处理 --- 超卖问题一人一单解决方案讲述了两种锁解决业务的使用方法,但是这样不能让锁跨JVM也就是跨进程去使用,只能适用在单体项目中如下图: 为了解决这种场景,我们就需要用一个锁监视器对全部集群进行监视…

房屋租赁系统在数字化时代中如何重塑租赁服务与提升市场竞争力

内容概要 在当今快速发展的数字化时代,房屋租赁系统的作用愈发重要。随着市场需求的变化,租赁服务正面临着新的挑战与机遇。房屋租赁系统不仅仅是一个简单的管理工具,更是一个能够提升用户体验和市场竞争力的重要平台。其核心功能包括合同管…

INCOSE需求编写指南-附录 D: 交叉引用矩阵

附录 Appendix D: 交叉引用矩阵 Cross Reference Matrices Rules to Characteristics Cross Reference Matrix NRM Concepts and Activities to Characteristics Cross Reference Matrix Part 1 NRM Concepts and Activities to Characteristics Cross Reference Matrix Part…

Java---入门基础篇(上)

前言 本片文章主要讲了刚学Java的一些基础内容,例如注释,标识符,数据类型和变量,运算符,还有逻辑控制等,记录的很详细,带你从简单的知识点再到练习题.如果学习了c语言的小伙伴会发现,这篇文章的内容和c语言大致相同. 而在下一篇文章里,我会讲解方法和数组的使用,也是Java中基础…

新版231普通阿里滑块 自动化和逆向实现 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向过程 补环境逆向 部分补环境 …

探索AI(chatgpt、文心一言、kimi等)提示词的奥秘

大家好,我是老六哥,我正在共享使用AI提高工作效率的技巧。欢迎关注我,共同提高使用AI的技能,让AI成功你的个人助理。 "AI提示词究竟是什么?" 这是许多初学者在接触AI时的共同疑问。 "我阅读了大量关于…

商密测评题库详解:商用密码应用安全性评估从业人员考核题库详细解析(9)

1. 申请商用密码测评机构需提交材料考点 根据《商用密码应用安全性测评机构管理办法(试行)》,申请成为商用密码应用安全性测评机构的单位应当提交的材料不包括( )。 A. 从事与普通密码相关工作情况的说明 B. 开展测评工作所需的软硬件及其他服务保障设施配备情况 C. 管…

Flink中的时间和窗口

在批处理统计中,我们可以等待一批数据都到齐后,统一处理。但是在实时处理统计中,我们是来一条就得处理一条,那么我们怎么统计最近一段时间内的数据呢?引入“窗口”。 所谓的“窗口”,一般就是划定的一段时…

Linux 进程概念

目录 一、前言 二、概念实例,正在执行的程序等 三、描述进程-PCB 四、组织进程 五、查看进程 ​编辑六、通过系统调用获取进程标示符 七、进程切换和上下文数据 1.进程切换 2.上下文数据 一、前言 在Linux中,每个执行的程序叫做进程&#xff…

allegro修改封闭图形线宽

说在前面 我们先把最优解说在前面,然后后面再说如果当时不熟悉软件的时候为了挖孔是用了shapes该怎么修改回来。 挖空最方便的方式是在cutout层画一个圆弧,下面开始图解,先add一个圆弧 z 最好是在画的时候就选择好层,如果忘记了后续再换回去也行,但好像软件有bug,此处并…

使用openwrt搭建ipsec隧道

背景:最近同事遇到了个ipsec问题,做的ipsec特性,ftp下载ipv6性能只有100kb, 正面定位该问题也蛮久了,项目没有用openwrt, 不过用了开源组件strongswan, 加密算法这些也是内核自带的,想着开源的不太可能有问题&#xff…

Day29(补)-【AI思考】-精准突围策略——从“时间贫困“到“效率自由“的逆袭方案

文章目录 精准突围策略——从"时间贫困"到"效率自由"的逆袭方案**第一步:目标熵减工程(建立四维坐标)** 与其他学习方法的结合**第二步:清华方法本土化移植** 与其他工具对比**~~第三步:游戏化改造…