我有一个关于在Windows系统上获取DLL目录的问题。
情况是这样的:
我有一个DLL和一个EXE文件。 exe文件必须加载DLL才能运行。 这两个模块位于不同的目录中。 而且,DLL的目录是可变的。 现在我必须在“运行时”中获取DLL的目录。
我怎么能这样做?
提前致谢。
答案 0 :(得分:6)
您是否需要找到DLL的加载位置或找到加载它的路径?
MSDN上的DLL路径搜索算法为documented,您可以使用SearchPath函数搜索系统路径。
如果您需要找到加载DLL的路径,请在加载后使用GetModuleFileName函数。这将获取LoadLibrary,GetModuleHandle返回的模块句柄,或者作为hinstDLL传递给DllMain并返回DLL的完整路径。
答案 1 :(得分:2)
我猜你需要实现一些自定义搜索算法。只有你的exe知道需要哪个DLL以及它可以在哪里。因此,找到路径并将其与LoadLibrary()一起使用。
顺便说一句,如果可能的话,我会考虑使用COM。通过这种方式,您将使用某些CLSID的DLL内容,这完全独立于文件路径。