3

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

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

[窗口标题]

RegSvr32

[内容]

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

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

指定的模块无法找到。

[好的]

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

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

如何关闭这些库的使用?

4

1 回答 1

7

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

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

于 2013-11-01T08:43:24.230 回答