我有一个用QT编写的程序,运行得很好。但是它对dnssd.dll有间接依赖,因为程序加载的dll使用了bonjour。如果运行程序的机器上没有安装bonjour,它会说
程序无法启动,因为您的dnssd.dll丢失了 电脑。尝试重新安装程序以解决问题。
我没有通过LoadLibrary
或其他方式加载此dll。我将二进制文件与存根相关联,因此它会在int main
之前自动加载。
显然重新安装程序并不能解决问题。对我而言,它清楚地说我需要安装bonjour,但对于大多数用户来说,这是极其神秘的。
我宁愿将此错误消息更具信息性,例如“需要为此应用程序安装Bonjour才能正常工作,请转到[insert-url-here]下载它。”
有没有办法检测dll何时无法加载loke并提供更好的错误消息?
答案 0 :(得分:5)
将其设置为延迟加载,然后尽可能早地(在导致加载发生之前),尝试自己加载它(使用LoadLibrary)并报告问题。