改善dll缺失错误消息

vid*_*ige 5 c++ dll qt bonjour

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

程序无法启动,因为您的计算机缺少dnssd.dll.尝试重新安装该程序以解决问题.

我没有通过LoadLibrary或其他方式加载此DLL .我将二进制文件与存根链接起来,以便之前自动加载int main.

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

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

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

Lou*_*nco 5

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

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

  • 您实际上并不需要通过 GetProcAddress 或类似方法进行调用。您将加载只是为了检查库是否存在——然后您像通常那样调用函数,知道加载过程会成功——延迟加载只是将运行时完成的 LoadLibrary 移动到您实际使用 DLL 的时间。 (2认同)