我们有一个特殊的Vista x64机器,在运行C# WinForms应用程序时,它会显示以下错误:
System.EntryPointNotFoundException:无法在DLL 'ComCtl32‘中找到名为'TaskDialogIndirect’的入口点。
在其他Vista机器上,同样的代码也能正常工作。由于某些原因,这台特定的Vista机器总是抛出此异常。
我们怎么才能解决这个问题?
发布于 2009-12-14 14:48:30
我遇到了问题,这和Naughter的免费XTaskDialog API,通过仿真在Windows机器上获得一种备用机制,使这个对话框实现更有用。:)
在我的例子中,这是一个激活上下文问题,正如在这个博客条目中提到的。
或者,如果某一天博客文章在网络空间中丢失(适用于Visual ):
步骤4中插入的代码:
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls"
version="6.0.0.0" processorArchitecture="*"
publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>发布于 2009-04-05 17:26:57
我建议将comctl32.dll版本在正在工作和不工作的Vista机器上进行比较--并比较它们的校验和,即使它们报告了相同的版本。
其他需要检查的事情:
在激活上下文中也可能值得阅读此文章。
发布于 2009-04-05 17:27:20
如果您用来运行该程序的其他机器使用的是Vista x86,那么您的代码中很可能有一个PInvoke导致了这个问题。您可能需要尝试将编译器目标体系结构设置为x86,以强制程序在x64 Vista上的WoW64中运行。默认情况下,Visual以与体系结构无关的方式使用设置生成程序集。这意味着当您试图在64位系统上运行.NET程序时,它应该由本机x64版本的CLR托管。在该上下文中加载32位DLL的Attemptiong将失败。相反,强迫应用程序在模拟的x86模式下运行应该可以做到这一点。
https://stackoverflow.com/questions/719251
复制相似问题