我正在用Delphi构建一个插件系统(你们中的一些人一直在帮助我完成这项任务).
要搜索DLL文件,我正在使用TSearchRec,它在dll文件的exe路径中搜索,然后我使用LoadLibrary来访问它们.然后,如果暴露某个函数(使用GetProcAddress),我将其作为插件加载.如果没有,则执行FreeLibrary,然后继续下一个文件.
在测试的时候,我注意到当TSearchRec找到了"borlndmm.dll"时,它恰好在那个路径中,它加载,并搜索我的插件函数,当然没有找到,但是如果执行FreeLibrary,我得到访问冲突.
其他no-plugin dll在同一路径中,如libmariadb.dll,可以安全地释放,没有错误.
当然,这很容易修复,让我的插件dll在自己的路径中,没有任何其他dll文件,这甚至出于性能原因会更好,因为它不必加载任何它不应该的库.
但我想了解它为什么会发生.有任何想法吗?
谢谢Nuno Picado