VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 692|回复: 8

关于多次调用dll(dll中有全局变量)的问题。

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-27 09:40:01 | 显示全部楼层 |阅读模式
用别人的dll, dll比较复杂,dll中有很多全局变量,动态调用dll执行一次需要20分种左右,dll运行正常,有dll源代码。dll不怎么好改,代码有点复杂。
   现在遇到一个问题,我在对一个IP地址执行一操作时,调用此dll过程中,点停止按钮时中途马上结束(需要释放dll?)。 并且马上我又想对另一个IP执行同样的操作,也需要调用此dll。

在第2次调用前,是不是需要先释放? 还有一个问题就是第2次调用dll时就得不到正常的信息了,怎么解决啊
   
回复

使用道具 举报

0

主题

12

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-2-19 18:30:01 | 显示全部楼层
DLL 全局加载就可以了
回复

使用道具 举报

0

主题

55

帖子

32.00

积分

新手上路

Rank: 1

积分
32.00
发表于 2020-3-5 13:00:01 | 显示全部楼层
那就引式调入DLL,只调一次就行。
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-3-7 11:45:01 | 显示全部楼层
dll中有很多全局变量!! 不释放的话,下次调用会出错的!有什么好的解决办法。
回复

使用道具 举报

0

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-3-8 05:00:01 | 显示全部楼层
dll中有很多全局变量!! 不释放的话,下次调用会出错的!有什么好的解决办法。
---------------------------------------------------------

那就用一次,加载一次,然后释放一次了,用LoadLibrary 和 FreeLibrary
回复

使用道具 举报

0

主题

12

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-8 13:30:01 | 显示全部楼层
建议你改改,既然有代码,要不问题以后更大
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-8 20:00:01 | 显示全部楼层
给DLL加个initial函数,初始化这些全局变量嘛
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-3-8 22:00:02 | 显示全部楼层
我的dll执行一次需要20分种,如果运行了3分钟后点停止按钮,就FreeLibrary的话,程序会异常
退出。
如果不FreeLibrary的话,马上又对另一ip执行操作调用此dll时又不正常,可能是dll全局变量不是初始值的原因了!!
回复

使用道具 举报

0

主题

70

帖子

42.00

积分

新手上路

Rank: 1

积分
42.00
发表于 2020-3-9 15:00:01 | 显示全部楼层
我的dll执行一次需要20分种,如果运行了3分钟后点停止按钮,就FreeLibrary的话,程序会异常退出。
如果不FreeLibrary的话,马上又对另一ip执行操作调用此dll时又不正常,可能是dll全局变量不是初始值的原因了!!

如果出现你说的问题应该是因为
1. dll 本身存在缺陷。 需要修改
2. 可能是你没有按照约定去调用dll中的函数,例如当开始新的执行操作时需要调用一个固定的函数,dll 利用这个函数去初始化相关的变量(如果dll 没有提供这样的函数,应该就是dll的设计存在缺陷)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表