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,可以了。

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值