模块"MyShellExt.dll"无法加载

bar*_*ris 3 c++ dll shell-extensions visual-studio-2010

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

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

[窗口标题]

的RegSvr32

[内容]

模块"MyShellExt.dll"无法加载.

确保二进制文件存储在指定的路径中或对其进行调试以检查二进制或从属.DLL文件的问题.

指定的模块无法找到.

[好]

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

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

如何关闭使用这些库?

sho*_*osh 7

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

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