小编nun*_*ado的帖子

Delphi:使用LoadLibrary加载DLL的奇怪行为

我正在用Delphi构建一个插件系统(你们中的一些人一直在帮助我完成这项任务).

要搜索DLL文件,我正在使用TSearchRec,它在dll文件的exe路径中搜索,然后我使用LoadLibrary来访问它们.然后,如果暴露某个函数(使用GetProcAddress),我将其作为插件加载.如果没有,则执行FreeLibrary,然后继续下一个文件.

在测试的时候,我注意到当TSearchRec找到了"borlndmm.dll"时,它恰好在那个路径中,它加载,并搜索我的插件函数,当然没有找到,但是如果执行FreeLibrary,我得到访问冲突.

其他no-plugin dll在同一路径中,如libmariadb.dll,可以安全地释放,没有错误.

当然,这很容易修复,让我的插件dll在自己的路径中,没有任何其他dll文件,这甚至出于性能原因会更好,因为它不必加载任何它不应该的库.

但我想了解它为什么会发生.有任何想法吗?

谢谢Nuno Picado

delphi dll access-violation

1
推荐指数
1
解决办法
1036
查看次数

标签 统计

access-violation ×1

delphi ×1

dll ×1