【发布时间】:2018-11-16 07:32:34
【问题描述】:
我正在使用 CoCreateInstance() 实例化一个 COM 服务器。我的 COM 服务器稍后会动态加载一些 dll。但它无法找到那些 dll。一种解决方案是将这些路径添加到 PATH 环境变量中,我想避免这种情况。我无法在代码中设置它,因为服务器已经加载,并且在加载后它不会遵守 PATH 设置。最好的解决方案可能是客户端应该能够设置 COM 服务器的搜索路径。可能吗?怎么样?
【问题讨论】:
-
因为您已经知道路径,并且如果您使用
LoadLibrary加载 DLL,那么只需使用绝对路径。如果您通过 COM 加载它们,则它们没有正确注册。 -
@RichardCritten,它们是非 COM dll,应该从搜索路径中找到。我不能使用绝对路径,因为找出每个依赖 dll 的路径会很乏味。这将是一场维护噩梦。
-
客户端程序员不太可能为您处理这些问题。一般来说,他们根本不知道这些东西的位置,您的安装程序在注册服务器时会处理它。
-
请澄清您是在谈论进程内服务器还是进程外服务器
-
@M.M,这是关于进程外服务器的。如果它是进程内的,它会继承客户端的搜索路径,这对我来说已经足够了。