首先这个问题就比较费解,超出常规认识。一般我们要知道:dll必须在系统目录或者当前目录,或者系统path所指定的搜索路径。这是三个准绳,绝对的真理。
换言之,一般安装程序会拷贝dll到系统目录,这是常用做法,但是容易给系统留下垃圾;
另外就是放系统exe所在的目录,也能正常运行,但是有个条件,不能用程序代码切换当前目录,好像切换了对于dll和图片相对路径的调用就有问题(不确定。。可以自己求证);
这里需要自己求证:系统全局外部dll和窗口上声明的外部dll,他们是在什么时间装载到内存。SetCurrentDirectory()是否会造成dll无法被加载,自己求证吧。
第三个方法就是设置到path中,加入dll所在的路径,很多手工配置软件就会遇到,特别是非window的软件最习惯搞这个东东了;
另外就是权限问题,比如win10,11安装了一些软件比如pb9,但是pb9的dll所在的路径却没有被设置进path中,这个就要手工修改添加了。估计是权限的问题。(我就遇到过,pb9可以运行,但是其他的exe编译后想直接运行,因为需要pb9的dll,就无法运行,都不用查找原因啦,这种情况直接就提示pbvm90.dll和pbdwe90.dll等动态库无法找到啦。)
看了文件夹,dll的确在代码目录中,看了外部函数申明,也没有问题。
又以为是ocx,注册;也不行。
在Windows系统中,dll文件通常存放在以下几个目录:
1. C:\Windows\System32
2. C:\Windows\SysWOW64(64位系统)
3. 应用程序的安装目录
拷贝到系统c:\window\system32下面,也不行。
尝试重启电脑,OK,可以了。
为何拷贝后还不行呢。可能是程序运行,已经加载到内存中等等原因。
总之不清楚,就这样搞定了。