日历
网志分类
展开全部
· ***    All     ***
· ***    Mood    ***
· ***    Life    ***
· *** Technology ***
· ***     Yc     ***
· ***  Cartoon   ***
· *** Collection ***
· ***  Unsorted  ***
媒体播放器

Get the Flash Player to see this player.
SkyDrive is currently not available.

站内搜索
友情链接
· 我的歪酷 非非共享界
· 风雨妖虹
· kingbeful@csdn
· 手心的太阳@瞬间十年
· Moment@Travis
· 江南麒麟居
· εз毛线团εз
· 乌拉的neverland
· 碾过的日子 闲也陶陶
· 狡兔三窟 *^.^*
· 橄榄林的风
· 水色の街
· Powerful and delicate, Life struggling
· 阿德咖吧
· 陷阱
· 风之华
· vkobe的Neverland@@
· 白日梦已死 · 伤越夜海
· 望天
· 空の軌跡
· 没什么好东西的空间
· 心情...咖啡屋
· 随风独自凉
· Some where i belong
· .★·°双晨·故事°☆ .
· BigWorld的记事本
· *Sara's*
· 人生若只如初见
· 宠辱不惊闲看庭前花开花落·去留无意漫随天外云卷云舒
· 我思我不在
· 飞扬飘雨
· lazy的猫猫
常用链接
· [Google]
· [Google Accounts]
· [IT Items]
· [Telnet@Yanxi]
· [Wikipedia]
· [Linux Manpages]
· [Mofile.com]
· [163888.net]
· [fm.qq.com]
· [Proxy]
· [Animepaper.net]
· [FreeproxySite]
· [gonwan@fc2]
· [skydrive.live.com]
· [gonwan@lifelogger]

订阅 RSS

0109821

歪酷博客

逆さまの蝶
In this Craziness
Uncertainy
一人一人の想いを
僕らは何処かに遺せるだろうか

In this Craziness
You gave me life
一つの想いを
僕らは何処まで守れるだろうか



« 上一篇: 6.29 6月都要结束了.. 下一篇: 嗯.. »
丸子·酱 @ 2008-06-30 16:58

    今天碰到了很诡异的问题: 一个程序放到新装的机器上, 跑不起来, 报错如图:


    好的, 这不是很简单么, 一坨dll copy过去不就行了么. 对, 没错, vs2005之前的确是这样的, 可是vs2005 M$玩出了新花样. copy完之后继续报错, 0x80000003对应的error code的含义是: One or more arguments are invalid. 这不是废话么...:


    突然想到项目默认的manifest是我自己加的, 为了支持XP的theme, 这个也有关系? 于是重用vs2005新建了一个mfc程序, 比对生成的binary中的manifest部分, 发现后者多了如下的部分:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

    <dependency>

        <dependentAssembly>

            <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>

        </dependentAssembly>

    </dependency>

    <dependency>

        <dependentAssembly>

            <assemblyIdentity type="win32" name="Microsoft.VC80.DebugMFC" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>

        </dependentAssembly>

    </dependency>

</assembly>

     那啥.. 这是啥.. 难道就是因为这个东西么? 8.0.50727.762, 这显然就是vs2005sp1自带的vc crt 的版本号么... 于是取消手动添加的manifest, 使用vs2005提供的, 可是...还是报错啊.....:


    有是一句废话... 我自己写的程序居然叫我re-install = =b... 诶.. google吧.. 说是vs2005开始, 这些redistributable的dll 会被系统保存在特别的目录下, 以区分同名但事实上不同版本的dll (额额..让我想到那个恼人的COM...). 如下图片:


    ei.. 那么长的路径名... 这些目录是装了vs2005的机器就会有的. 显然我们不会要求用户也装那么庞大的东西吧. 于是M$提供了所谓的redistributable package=.=... 本来直接复制不是挺好的么... 下载地址点这里.

    恩.. 不光是程序起来的时候会判断crt的路径, dll load的时候也是, 包括调用LoadLibrary()的时候. 而今天碰到的实际问题就是: 程序掉一个dll, dll LoadLibrary一个open source的dll, 而最后那个dll包含的manifest不正确. 啧啧, 用dependency walker喵了很久也看不出来原因好晕, 最后问题果然出在那个3rd party的dll上, 还是逐步比较manifest才发现的, 啧啧.....


曾经的这一天...



评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定