首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在DLL“TaskDialogIndirect”中找到名为“ComCtl32”的入口点

无法在DLL“TaskDialogIndirect”中找到名为“ComCtl32”的入口点
EN

Stack Overflow用户
提问于 2009-04-05 16:29:42
回答 4查看 5.7K关注 0票数 7

我们有一个特殊的Vista x64机器,在运行C# WinForms应用程序时,它会显示以下错误:

System.EntryPointNotFoundException:无法在DLL 'ComCtl32‘中找到名为'TaskDialogIndirect’的入口点。

在其他Vista机器上,同样的代码也能正常工作。由于某些原因,这台特定的Vista机器总是抛出此异常。

我们怎么才能解决这个问题?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-14 14:48:30

我遇到了问题,这和Naughter的免费XTaskDialog API,通过仿真在Windows机器上获得一种备用机制,使这个对话框实现更有用。:)

在我的例子中,这是一个激活上下文问题,正如在这个博客条目中提到的。

或者,如果某一天博客文章在网络空间中丢失(适用于Visual ):

  1. 在“解决方案资源管理器”中打开项目属性,
  2. 在“安全”选项卡上,选中“启用ClickOnce安全设置”,
  3. 现在您可以看到app.manifest文件出现在解决方案的Properties文件夹中,打开它,
  4. 在标签下面插入下面的代码。
  5. 如果您试图构建,可能会出现错误。若要修复它,请取消选中“启用ClickOnce安全设置”。

步骤4中插入的代码:

代码语言:javascript
复制
<dependency>
  <dependentAssembly>
    <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" 
        version="6.0.0.0" processorArchitecture="*"
        publicKeyToken="6595b64144ccf1df" language="*" />
  </dependentAssembly>
</dependency>
票数 10
EN

Stack Overflow用户

发布于 2009-04-05 17:26:57

我建议将comctl32.dll版本在正在工作和不工作的Vista机器上进行比较--并比较它们的校验和,即使它们报告了相同的版本。

其他需要检查的事情:

  • 有没有可能这台不工作的机器有一个预发布版本的Vista?
  • 是否有可能非Vista版本的comctl32.dll已被复制到机器上,并正在被应用程序拾取?( Visual附带的“依赖”实用程序在这里可能会有所帮助。)
  • 是否有可能是病毒或蠕虫(或什么不是)取代了comctl32.dll?

在激活上下文中也可能值得阅读此文章

票数 1
EN

Stack Overflow用户

发布于 2009-04-05 17:27:20

如果您用来运行该程序的其他机器使用的是Vista x86,那么您的代码中很可能有一个PInvoke导致了这个问题。您可能需要尝试将编译器目标体系结构设置为x86,以强制程序在x64 Vista上的WoW64中运行。默认情况下,Visual以与体系结构无关的方式使用设置生成程序集。这意味着当您试图在64位系统上运行.NET程序时,它应该由本机x64版本的CLR托管。在该上下文中加载32位DLL的Attemptiong将失败。相反,强迫应用程序在模拟的x86模式下运行应该可以做到这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/719251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档