`

Manifest的问题

阅读更多
原始连接:http://www.zming.net/blog/index_en.php?itemid=183

Manifest的问题
嗯 开始试着使用免费下载的Visual Studio 2005 Express Edition了
还是挺好用的,以前的很多程序也都顺利地移植到了新的开发环境下,编译器和IDE都多了好多选项,正在熟悉中
比较困惑的是Manifest,呵呵 编译出来的程序 即使是Native的,离了它也运行不了,会找不到dll报错,除非把它embed进exe文件

后来查了查 基本明白了,具体的说是这样的:

dll是被动态调用的,所以会被若干个程序共享使用的 但是如果dll在应用程序不知道的情况下升级了、或是被另一个程序更改了,就可能会出现问题,即"DLL Hell"

随着系统资源越来越丰富,硬盘不那么紧张,所以在XP以后的操作系统中,用新的机制来管理DLL
(这种机制,这不仅仅是对于.NET而言,对于普通的Native程序也是一样的)

Madifest是个XML的描述文件,对于每个DLL有DLL的Manifest文件,对于每个应用程序Application也有自己的Manifest

对于应用程序而言,Manifest可以是一个和exe文件同一目录下的.manifest文件,也可以是作为一个资源嵌入在exe文件内部的(Embed Manifest)

XP以前版本的windows,会像以前那样执行这个exe文件,寻找相应的dll,没有分别
Manifest只是个多余的文件或资源,dll文件会直接到system32的目录下查找,并且调用

而XP以后的操作系统,则会首先读取Manifest,获得exe文件需要调用的DLL列表
(此时获得的,并不直接是DLL文件的本身的位置,而是DLL的manifest)
操作系统再根据DLL的Manifest去寻找对应的DLL
<因此就可能区别不同版本的同一个DLL文件,或是指定一个程序本身Isolated的DLL>

不过使用Visual Studio 2005以后的一个新问题是,
VS2005带的8.0新版的C运行库(VC 8.0 CRT)文件在XP以后支持manifest的Windows版本中被调用时,
将会check一下Application自身的Manifest,否则将会拒绝被调用
这也就是说,使用Visual Studio开发的Application,Manifest将是必不可少的
(搞不懂MS为啥要这样设置,所以与VS2003.NET不同了)
(后来想想,除了MS自己说的哪些冠冕堂皇的原因,至少这样一来Linux的Wine模拟要麻烦多了)

除非,你的程序是静态链接的,没有使用dll,只使用了操作系统核心的 Kernel32.dll, User32.dll, Ole32.dll, 或ShDocVW.dll 等
project的设置必须是Use Standard Windows Libraries、Not Using ATL、No Common Language Runtime support
那么你可以不需要考虑Manifest 可以关掉它

VS2005中Menifest相关的设置:
  Project/Properties/Linker/Manifest File/Generate Manifest  决定是否生成Manifest,如上情况才可以关闭
  Project/Properties/Linker/Manifest File/Allow Isolation      这个是设置DLL的调用的,并不能决定Manifest是否还是必须的
  Project/Properties/Manifest Tool/Input and Output/Embed Manifest  决定Manifest是个单独的文件还是嵌入到exe内的资源

【对于我来说,使用SDL必须是启用DLL的动态链接方式,所以必须开启Manifest,并且让Manifest Embed进入exe比较方便】
【与上面内容相应的 是关于如何发布软件的问题,事实上只有VC6.0的CRT库是绑定作为Windows的一部分的,之后从VS.net开始,VC程序制作安装包也是要考虑库文件的,只不过VC6.0时推荐拷入System32,VC.net时推荐放在exe文件local目录,而现在VS2005则还需要考虑Manifest的问题了,看似麻烦,其实也还好,VS自带工具打包,下面一些网址也有讲如何手工做redistribution】

参考网址:
http://msdn2.microsoft.com/en-us/library/ms235342.aspx
http://msdn2.microsoft.com/en-us/library/ms235265.aspx
http://msdn2.microsoft.com/en-us/library/8kche8ah.aspx
http://blog.kalmbachnet.de/?postid=54
http://blogs.msdn.com/nikolad/archive/2005/03/18/398720.aspx
分享到:
评论

相关推荐

    Vue2基础实例-实现移动端静态页面(CDN引入方式)

    Vue2基础实例-实现移动端静态页面(CDN引入方式)

    基于vb+access 实现的学籍管理系统毕业设计(论文+源代码)

    【作品名称】:基于vb+access 实现的学籍管理系统【毕业设计】(论文+源代码) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 本系统主要完成对学生情况和学生成绩的管理,包括数据库中表的添加、修改、删除等。系统还可以完成对各类信息的浏览、查询、添加、删除、修改、报表等功能。 系统的核心是数据库中各个表联系,每一个表的修改都将联动的影响其它的表,当完成对数据的操作时系统会自动地完成数据库的修改。查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能,并具备报表打印功能。 关键字:控件、窗体、数据库、vb6.0、access97。 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。

    基于MATLAB汽车框定代码面板GUI(1).zip

    计算机网络期末复习

    软件项目开发,项目管理10条

    软件项目开发,项目管理10条

    三菱plc实例程序61个,机械手、拉丝机、压铸机、啤酒输送、喷泉控制、尿片包装机、模温机、硫化机、碾压机、磨床、泡沫机等等

    两种简单的彩灯闪烁程序.rar 两线控制机械手.rar 两轴伺服控制的PCB自动切边(PLC+ 人机界面)程式.rar 两道FX2N-4AD习题(有程序).rar 六头直径式拉丝机.rar 六层六站电梯.rar 冷却水泵节能循环运行1.rar 冷室压铸机FX PLC程序.zip 力恒锌合金压铸机.rar 啤酒输送无压力系统三菱程序.rar 喷泉控制设计.rar 喷涂.rar 喷涂生产线粉末喷涂控制程序.rar 喷灌控制器.rar 墨西哥纬创二期工程.rar 密码锁门梯形图.rar 尿片包装机.rar 平板硫化机FX2N-PLC加 F940人机.rar 木工机械数控载板锯.rar 某军区恒压供水程序.rar 某生产自动线.rar 某运料小车(cs).rar 某锻压机械厂的80吨冲床程序.rar 模拟量程序,自动跟踪.rar 模温机.rar 模糊控制算法的PLC程序模块.rar 泡沫机.rar 流水线控制.rar 淋膜复合机组.rar 煤矿皮带运输机电控系统.rar 煤质采样程序.rar 瑪斯蘭贰厂壹期.rar 硫化机.rar 碾压机.rar 磨床.rar 磨边机三菱FX程序+人机界面控制

    基于JAVA的高校竞赛和考级查询系统-源码+万字LW.zip

    本次开发的高校竞赛和考级查询系统实现了字典管理、公告管理、教务处管理员管理、竞赛管理、竞赛收藏管理、竞赛留言管理、竞赛报名管理、学院负责人管理、学生管理、指导老师管理、管理员管理等 今天向大家分享一个最新完成的高质量毕业设计项目作品 基于SSM的XXX管理系统 项目评分(最低0分,满分5分) 难度系数:3分 工作量:5分 创新点:3分 界面美化:5分 使用技术 前端: html/js/css/vue 后端:ssm 数据库:MySql 服务器:apache-tomcat 编译器:IntelliJ IDEA 项目管理工具:maven 项目包含内容 (包含毕设全套内容) 项目源码 论文 运行效果视频、部署参考教学视频

    R语言中模型选择与评估的全面实践

    在R语言中,模型选择和评估是一个涉及多个步骤的过程,包括数据预处理、模型训练、超参数调优、模型评估和结果可视化。通过使用caret、ROCR等包,我们可以构建、评估和优化各种机器学习模型。掌握这些技能对于数据科学家和机器学习工程师来说至关重要,它们是构建有效预测模型的基础。

    自定义按钮实现(带图片文字虚线实线边框切换)

    WPF+MVVM 自定义按钮实现(带图片文字虚线实线边框切换),案例给出两种状态变化控制,一种是两个按钮分开控制,通过按钮禁用边框变成虚线表示不可用状态,另一种时一个按钮控制状态变化,改变按钮文字描述和背景图片。详细描述见博客 https://blog.csdn.net/qq_21419015/article/details/143219764

    Logistic回归(分类)问题探讨与实践博文对应的数据和代码

    Logistic回归(分类)问题探讨与实践博文对应的数据和代码。

    为开发人员打造的低代码开发平台 Mybatis-plus关联查询,强大的无代码模型表单页面流程设计能力等全方位赋能

    用上Diboot,大多数SQL都不用写了,代码极大简化,让开发专注于业务;Diboot基础封装的内部实现,确保运行高效率高性能,帮你规避常见的坑。基于Devtools的代码生成能力,后端、前端、关联、复杂主子页面、移动端、非覆盖式更新代码、AI辅助命名... 全支持;零代码不能满足的复杂场景,基于生成后的代码快速扩展,无任何扩展局限性。模型设计、页面设计、表单设计、流程设计、数据大屏 等能力全支持,多数功能直接配;表单与流程解耦,流程挂载多表单,表单灵活复用。零/低/全代码之间顺畅融合,自由切换。多数常规功能零代码搭建即用;复杂功能支持集成自定义手写页面、支持生成前后端代码自由扩展; 为开发人员打造的低代码开发平台。Mybatis-plus关联查询,关联无SQL,性能高10倍,前后端代码本地可视化生成,flowable工作流,spring cloud微服务,强大的无代码模型表单页面流程设计能力等全方位赋能!

    百度域名动态解析DDns

    自动根据动态域名配置信息解析域名,类似花生壳动态域名解析功能

    跟岗实习提交材料.zip

    跟岗实习提交材料.zip

    Mqtt消息模拟程序,模拟发送MQTT数据

    Mqtt消息模拟程序,模拟发送MQTT数据

    TL-ER3220G V4.0升级软件20221207-3.0.4

    TL-ER3220G V4.0升级软件20221207_3.0.4

    【永磁电机】基于matlab四模块永磁轮毂电机的容错控制策略仿真【含Matlab源码 期】.zip

    CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    算法与数据结构-综合提升 C++版

    算法与数据结构-综合提升 C++版 资源列表: 00-0pening 01-Why-Algorithms 02-Sorting-Basic 03-Sorting-Advance 04-Heap 05-Binary-Search-Tree 06-Union-Find 07-Graph-Basics08-Minimum-Span-Trees 09-Shortest-Path 10-Ending

    红薯无印高清图提取.zip

    红薯无印高清图提取.zip

    22应统3 玛依拉 220110780519 作业2.ipynb

    22应统3 玛依拉 220110780519 作业2.ipynb

    5G NR GSCN计算SSB的NARFCN MATLAB实现

    本期给大家带来5G NR中已知GSCN如何计算对应的 SSB 绝对射频信道号NARFCN,根据gscn先计算出中心频率,再根据中心频率反推NARFCN,用MATLAB实现,参考3GPP 38.104,欢迎一起交流

    基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)

    基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计),该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕业设计)基于深度学习的垃圾识别与分类算法研究源码(高分毕

Global site tag (gtag.js) - Google Analytics