每日热议!单机游戏无法定位程序输入点于动态链接库_tgp无法定位程序输入点于动态链接库
1、今天同事在WindowsXP系统上运行程序遇到这样一个错误:我试了一下,在Win7上运行则没有这个错误。2、只是程
1、今天同事在Windows XP系统上运行程序遇到这样一个错误:我试了一下,在Win7上运行则没有这个错误。
2、只是程序运行出错,代码编译是没有问题的。
(资料图)
3、初步分析了一下,大致明白了问题了根源。
4、问题的根源在于程序的exe或者其底层库链接了一个错误的msvcrt.dll。
5、其实微软提供的VC运行时库是有很多版本的。
6、为什么需要这么多的运行时库?原因很多,主要有下面两个:一是为了不同的处理器厂商和硬件架构,比如amd和intel,比如x86和x64等等;二是为了适配不同VS版本,比如VS2003、VS2005、VS2008等等,即使同是VS2008,VS2008和VS2008+sp1的运行时库都是不一样的。
7、因此msvcrt.dll在xp系统和win7系统都是不一样的,具体到这个错误是_ftol2函数在xp系统和win7系统所处的函数地址是不一样的。
8、如上所述,要解决这个错误就必须找到到底哪个底层库链接了错误的msvcrt.dll。
9、这次我采用的一个笨办法是使用depends打开exe程序,然后一个个地查找其依赖库,最后找到一个opengl32.dll,其视图如下:从上图可以看出opengl32.dll所依赖的msvcrt.dll呈现红色警告,可以看出opengl32.dll所链接的msvcrt.dll并不对。
10、后来我检查了一下,exe所在目录下有opengl32.dll,把它删掉后程序所用的应该是操作系统目录下的opengl32.dll,这样程序能顺利启动了。
11、单纯靠depends打开exe程序分析它的依赖库是否存在错误链接的问题这种做法效率无疑有点低,特点是当一个程序的依赖库特别多的时候。
12、我想到的一个可以提高效率的做法是写一个程序通过获取exe的依赖库表,然后逐个进行动态加载(即调用LoadLibrary函数),一旦加载时出现无法定位程序输入点的错误,即可判断该库存在链接的错误。
本文就为大家分享到这里,希望小伙伴们会喜欢。
标签:
1、今天同事在WindowsXP系统上运行程序遇到这样一个错误:我试了一下,在Win7上运行则没有这个错误。2、只是程
1、给自己施加压力2、其实拖延症是因为压力不够。我想我还有时间。如果我再拖久一点,我会想办法解决的。但是,这其实是人性的
1、被老鼠咬伤后,用流动清水和肥皂水冲洗伤口15分钟以上,用碘伏消毒。2、老鼠不容易携带狂犬病毒,但相对容易携带出血热病
北京时间3月16日凌晨,欧冠1 8决赛皇马与利物浦迎来次回合较量,在皇马首回合5-2取胜后,双方次回合的较量备受关注。BBC在今日的文章中对欧冠
拒绝人民币结算,莫迪想清楚了?一直以来,在中俄与西方之间,印度都是墙头草,两边倒,不会公然帮着一方,但这次,居然公开和中俄唱反调,拒
据土耳其媒体3月15日报道,连日来,土耳其阿迪亚曼省、马拉蒂亚省、卡赫拉曼马拉什省等多个地震灾区遭暴雨袭击,致各地多处灾民安置点被洪水淹
1、金刚石又叫钻石。2、钻石分很两种,一种地矿钻石,一种天陨钻石。3、天陨钻石有的无光,亚光状。4、它们的硬度是所有物质
在上海的快餐店和奶茶店,扫码点餐已经非常普及。作为人工点餐之外的另一种选择,扫码点餐得到了很多消费者认可,特别是“手机族”的欢迎。...
[ 相关新闻 ]