我有一个用 QT 编写的程序,运行良好。但是它间接依赖于 dnssd.dll,因为程序加载的 dll 使用 bonjour。如果运行程序的机器上没有安装 bonjour,它会说
The program can't start because dnssd.dll is missing from your computer. Try reinstalling the program to fix the problem.
我没有通过 LoadLibrary
或其他方式加载此 dll。我将二进制文件链接到 stub ,因此它会在 int main
之前自动加载。
显然,重新安装程序并不能解决问题。对我来说,它清楚地表明我需要安装 bonjour,但对于大多数用户来说,这是极其神秘的。
我宁愿让此错误消息提供更多信息,例如“需要安装 Bonjour 才能使此应用程序正常工作,请转到 [insert-url-here] 下载它。”
有没有办法检测 dll 何时加载失败并给出更好的错误消息?
最佳答案
将其设置为延迟加载,然后尽早(在您导致加载发生之前)尝试自己加载(使用 LoadLibrary)并报告问题。
关于c++ - 改进dll丢失错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7740215/