调用 TaskDialogIndirect 加载程序说未找到序数 345

Posted

技术标签:

【中文标题】调用 TaskDialogIndirect 加载程序说未找到序数 345【英文标题】:calling TaskDialogIndirect loader says ordinal 345 not found 【发布时间】:2016-05-04 01:08:23 【问题描述】:

我为 TaskDialogIndirect 构建了简单的 MS 示例(请参阅 https://msdn.microsoft.com/en-us/library/windows/desktop/bb760544(v=vs.85).aspx)

当我运行它时,我得到“序号 345 不能位于动态链接库 COMCTL32.dll 中”

上面的页面说它需要 ComCtl32.DLL 版本 6,但 C:\Windows\System32\ComCtl32.DLL 是 5.82.7601.18201,我在磁盘上的任何地方都找不到版本 6。

我正在运行带有 VS2012 的 Windows 7。 TaskDialog 是在 Vista 中添加的,为什么我没有正确的 ComCtl32.DLL 版本???

【问题讨论】:

msdn.microsoft.com/en-us/library/windows/desktop/… 【参考方案1】:

在 Windows XP 及更高版本 (SxS) 上有两个版本的 ComCtl32.dll。 v5.8x 是默认设置,您需要选择加入 v6,因为可能与新的主题/视觉样式不兼容。大多数新功能和控件仅添加到 v6。

要获得 v6,您必须 add a manifest 到您的应用程序。建议您将清单嵌入应用程序资源中,但您也可以使用外部清单;只需将 XML 文件命名为 yourappname.exe.manifest

【讨论】:

谢谢!我一直在努力弄清楚到底发生了什么以及“序数 345”指的是哪个库,但最终这就是解决方案。 ?‍♂️【参考方案2】:

这是一个通用且有用的代码块,应该有助于加载正确的通用控件comctl32.dll

#if defined _M_IX86
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif

【讨论】:

【参考方案3】:

您可以运行sfc /scannow 来解决此问题。 [Reference]。

【讨论】:

以上是关于调用 TaskDialogIndirect 加载程序说未找到序数 345的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 TaskDialogIndirect 在 vb6 中获取回调函数?

将 TaskDialogIndirect 与 MFC 一起使用时,标题标题 (AFX_IDS_APP_TITLE) 不正确

未调用 BackgroundWorker DoWork 函数

什么叫做反射,反射在编程中起什么作用?

Unity UI相关总结

是否可以连接或调用现有进程?