您的位置:首页 > 房产 > 家装 > PB9调用外部的dll调试运行报无法调用外部函数功能而编译后却正常?

PB9调用外部的dll调试运行报无法调用外部函数功能而编译后却正常?

2024/10/6 14:33:30 来源:https://blog.csdn.net/chengg0769/article/details/142124514  浏览:    关键词:PB9调用外部的dll调试运行报无法调用外部函数功能而编译后却正常?

首先这个问题就比较费解,超出常规认识。一般我们要知道: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,可以了。

为何拷贝后还不行呢。可能是程序运行,已经加载到内存中等等原因。

总之不清楚,就这样搞定了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com