我在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 。
这意味着我应该将这些库包含在我的安装包中。
如何关闭使用这些库?
答案 0 :(得分:7)
这些库是C运行时,C ++运行时和ATL运行时。从那时起,您无法关闭前两个对于启动程序运行至关重要。但是,您可以静态链接到它们,因此您不需要像DLL那样携带它们。为此,您转到项目设置C / C ++,代码生成,运行时库并选择“多线程”或“多线程调试”而不是“多线程DLL”或“多线程调试DLL”。确保在所有设置配置中都这样做(Debug,Relaese etc')
至于第3个库(ATL100.dll),它也可能受此设置的影响,我不确定。如果停止使用从中导入的函数,则可以删除。依赖性walker可以告诉您从该库中使用的函数。如果可以;停止使用该函数,那么该库也可能具有静态版本(.lib文件而不是.dll文件)