【问题标题】:The module "MyShellExt.dll" failed to load模块“MyShellExt.dll”加载失败
【发布时间】:2013-11-01 08:30:29
【问题描述】:

我在 Visual Studio 2010 中编写了一个 Shell 扩展。 它实现了上下文菜单处理程序和文件图标处理程序。

在装有 Visual Studio 的计算机上运行良好。但在其他计算机上,注册 MyShellExt.dll 失败并显示消息

[窗口标题]

RegSvr32

[内容]

模块“MyShellExt.dll”加载失败。

确保二进制文件存储在指定路径或调试到 检查二进制或相关 .DLL 文件是否存在问题。

找不到指定的模块。

[确定]

我检查了依赖项,发现以下文件必须与 MyShellExt.dll 位于同一文件夹中:msvcr100.dllmsvcp100.dllatl100。 dll

这意味着我应该将这个库包含在我的安装包中。

如何关闭这些库的使用?

【问题讨论】:

  • Project->Setting->Microsoft Foundation Classes,值是“在共享DLL中使用MFC”吗?

标签: c++ visual-studio-2010 dll shell-extensions


【解决方案1】:

这些库是 C 运行时、C++ 运行时和 ATL 运行时。从那时起,您不能关闭前两个对于启动程序运行至关重要。但是,您可以静态链接到它们,因此您不需要将它们作为 DLL 携带。为此,您转到项目设置 C/C++、代码生成、运行时库并选择“多线程”或“多线程调试”而不是“多线程 DLL”或“多线程调试 dll”。确保在所有设置配置(Debug、Relaese 等)中都这样做

至于第三个库(ATL100.dll),它也可能受此设置影响,我不确定。如果您停止使用从中导入的功能,您可能会删除。依赖遍历器可以告诉您正在使用该库中的哪些函数。如果您不能停止使用该功能,则该库可能还具有静态版本(.lib 文件而不是 .dll 文件)

【讨论】:

  • 对于atl100.dll需要改这个选项-项目属性->配置属性->常规->使用ATL->“不使用ATL”或者“静态链接到ATL”而不是“动态链接”到 ATL"
猜你喜欢
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
相关资源
最近更新 更多