模块“MyShellExt.dll”无法加载

时间:2013-11-01 08:30:29

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

我在Visual Studio 2010中编写了一个Shell扩展。 它实现了一个Context Menu Handler和File Icon Handler。

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

  

[窗口标题]

     

的RegSvr32

     

[内容]

     

模块“MyShellExt.dll”无法加载。

     

确保二进制文件存储在指定路径或调试它   检查二进制或从属.DLL文件的问题。

     

找不到指定的模块。

     

[OK]

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

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

如何关闭使用这些库?

1 个答案:

答案 0 :(得分:7)

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

至于第3个库(ATL100.dll),它也可能受此设置的影响,我不确定。如果停止使用从中导入的函数,则可以删除。依赖性walker可以告诉您从该库中使用的函数。如果可以;停止使用该函数,那么该库也可能具有静态版本(.lib文件而不是.dll文件)