c++ - 改进dll丢失错误信息

标签 c++ qt dll bonjour

我有一个用 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)并报告问题。

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

关于c++ - 改进dll丢失错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7740215/

相关文章:

c++ - C 函数 **ntohl** 给出链接器错误(未解析的外部)

c++ - 如何在 C++ 中通过 'int' 类型 'vector<int>' 来决定?

qt - 如何连接到 mousePressEvent 插槽 Qt

C# 动态加载/卸载 DLL Redux(当然使用 AppDomain)

c# - 在 App_Web_*.dll 中找到了 index.cshtml 的副本,但正确的源代码与 App_Web_*.dll 中内置的版本不同,

c++ - 在 VB.NET 中使用 DLL 导入/声明以及 .NET 不使用的参数类型

c++ - 无法从 QLineEdit 检索文本值

c++ - 使用 '&' 创建指向成员错误的指针

qt - 设计师如何创建 Line 小部件?

qt - 直接定义静态QStringList