改善dll缺失错误消息

时间:2011-10-12 12:40:13

标签: c++ qt dll bonjour

我有一个用QT编写的程序,运行得很好。但是它对dnssd.dll有间接依赖,因为程序加载的dll使用了bonjour。如果运行程序的机器上没有安装bonjour,它会说

  

程序无法启动,因为您的dnssd.dll丢失了   电脑。尝试重新安装程序以解决问题。

我没有通过LoadLibrary或其他方式加载此dll。我将二进制文件与存根相关联,因此它会在int main之前自动加载。

显然重新安装程序并不能解决问题。对我而言,它清楚地说我需要安装bonjour,但对于大多数用户来说,这是极其神秘的。

我宁愿将此错误消息更具信息性,例如“需要为此应用程序安装Bonjour才能正常工作,请转到[insert-url-here]下载它。”

有没有办法检测dll何时无法加载loke并提供更好的错误消息?

1 个答案:

答案 0 :(得分:5)

将其设置为延迟加载,然后尽可能早地(在导致加载发生之前),尝试自己加载它(使用LoadLibrary)并报告问题。

http://msdn.microsoft.com/en-us/library/151kt790.aspx