离谱事件&解决方法2 无法定位程序输入点XXX于动态链接库XXX.dll

事情经过:

本人一只acmer,使用sublime编写代码,但是前两天在打开cpp类型的文件的时候显示报错如下:

 

这里的dll文件就是动态链接库,它并不是一个可执行文件,里面存放的是程序的函数实现过程(公用),当程序想要执行某个函数的时候,就要先载入dll文件,然后调出对应的函数地址再调用函数 

上网搜了一下,大部分文章对该问题的解释是:

1.用户误操作删除了对应的dll文件

2.电脑中毒,杀毒软件无脑强制删除了一部分相关文件

3.该dll文件本身有一定问题(安装,更新时由于断电,关机等引起)

上述情况有对应的解决方法,可以自行百度(文章应该还是很多的 

本人尝试过的操作包括但不限于:

重装sublime

重装clang

电脑全盘查杀

调整/添加clang文件的系统,用户路径(划重点,后面要考

用别人的两个对应dll文件替换掉原本的文件

。。。

均以失败告终


解决: 

这时候我们来回顾一下dll文件的作用:负责为程序调用函数提供方便,

百度了一下可执行文件在运行时寻找和调用dll文件的路径搜索顺序。一般是:

1 可执行文件所在目录;
2 进程当前目录;
3 系统目录,%SystemRoot%/system32
4 16位系统目录;,%SystemRoot%/system
5 Windows目录,%SystemRoot%/
6 系统/环境变量PATH中的目录;

如果大家有类似的问题,可以按照这个顺序去一一检查一下对应路径下是否存在其它的可疑dll文件。

本人搜索了一下clang.dll 

发现anaconda里面也有一个clang.cll文件,然后又查了一下libLLVM-16.dll文件,果然,anaconda里面也有。马上又在系统变量里面查了一眼,果然,anaconda在mingw64上面...(所以之前调路径是调了个寂寞,只是做了个样子)

那么问题就解决了。系统在搜索.dll文件的时候,先在anaconda的子目录下找到了clang.dll等两个文件,因此调用了错误的文件,也就没有找到对应函数的地址。

那么调一下顺序就好了。

然后因为系统调用的优先级是系统变量>环境变量,如果anaconda放在环境变量里,自然是不会有事的。

后记:

真的不希望离谱事件这个系列文章会有第三讲。。。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值