1

我认为静态链接(到 CRT,即/MT编译器选项)在构建小型工具时非常方便,这要归功于易于部署。(像 Process Explorer 这样的Sysinternals 工具就是一个例子。)

然而,有人让我注意到,CRT 使用的几种资源可能会在插件架构(例如 shell 扩展)等上下文中耗尽:特别是,FLS 索引似乎是最快耗尽的资源,并且LoadLibrary()在加载第 127 个时可能会失败CRT 静态链接的 DLL。

我已经构建了一些 shell 扩展,但我从未遇到过这个问题。

有没有人遇到过CRT 静态链接的进程内 COM 服务器(如 shell 扩展)的资源耗尽问题?

如果是这样,是否有一个“修复”(除了使用动态链接到 CRT,不幸的是,这会使部署复杂化,并且需要为 VCRedist 下载一些兆字节,而使用 CRT 静态链接的小东西只有几百千字节。 ..)。

4

1 回答 1

1

嗯,这有点像担心你是否有一个好的备份,以防流星撞击毁坏机器。您的 shell 扩展的用户不久前就会发现有些事情是错误的。每次他使用“文件+打开”对话框时,都会将 100 多个 DLL 注入到一个进程中,这并没有被忽视,该程序在 5 秒或更长时间内已经死了。

所以要么他做点什么,然后用像 SysInternals 的 AutoRuns 这样的实用程序清理他的机器。如果您的扩展程序足够有用,您将幸免于难。或者用户没有采取任何对策并且很高兴有一个硬上限。您的扩展程序将失败,但用户无法说出原因。您可能会接到支持电话,您知道该怎么做。

于 2013-10-06T20:09:24.220 回答