【发布时间】:2014-03-20 15:23:59
【问题描述】:
我在某个文件夹中有x.dll,它是系统路径的一部分。而且我在同一个文件夹中还有另一个文件x.zzz,这不是可执行文件。
在 C++ 程序中,我想在不加载 x.dll 的情况下搜索 x.zzz。但我希望它能够像LoadLibrary 函数一样工作。即,它的搜索顺序应与 LoadLibrary 相同。
这可能吗?
PS:
我检查了SearchPath() 函数,但documentation 中有一条注释说这不应该用于此目的。
不推荐使用 SearchPath 函数作为查找 .dll 文件的方法,如果 输出的预期用途是调用 LoadLibrary 函数。这可能导致 在定位错误的 .dll 文件中,因为 SearchPath 函数的搜索顺序 与 LoadLibrary 函数使用的搜索顺序不同。如果您需要定位 并加载 .dll 文件,使用 LoadLibrary 函数。
【问题讨论】:
-
我怀疑您提出的问题没有好的答案。你真正的根本问题是什么?
-
@David:x.zzz 包含一些我们用来实现反射的辅助信息。所以,我们需要打开这个文件并检查这里是否存在一些类。是的,看起来没有直接的方法可以实现这一点。我们会找到一些肮脏的方法来实现这一点。谢谢。
-
与其使用肮脏的方式来做到这一点,也许您可以实施更好的解决方案
-
是的。我所描述的“肮脏”是用 findfiles 等或类似的东西自己编写一个很长的例程.... :)
-
我们对这个确切问题的解决方案是通过一系列低级调用(我记得是 FIndFirstFile)来模拟 LoadLibrary 的行为。没有其他方法做得很对。