CRT 静态链接的 COM InProc 服务器的资源(例如 FLS 索引)耗尽
Resource (e.g. FLS index) exhaustion with CRT-statically-linked COM InProc servers
我认为静态链接(到 CRT,即 /MT
编译器选项(在构建小工具时非常方便,这要归功于易于部署。(像Process Explorer这样的系统内部工具就是一个例子。
但是,有人让我注意到 CRT 使用了几种资源,这些资源可能会在插件架构(例如 shell 扩展(等上下文中耗尽:特别是,FLS 索引似乎是运行最快的索引,LoadLibrary()
加载第 127 个 CRT 静态链接的 DLL 时可能会失败。
我已经构建了一些 shell 扩展,但我从未遇到过这个问题。
有没有人遇到过使用 CRT 静态链接的进程内 COM 服务器(如外壳扩展(的这种资源耗尽问题?
如果是这样,是否有"修复"(除了使用动态链接到CRT,不幸的是,这使部署复杂化,并且需要为VCRedist下载一些兆字节,而CRT静态链接的小东西只有几百千字节......
Hmya,这有点像担心您是否有良好的备份,以防流星撞击破坏机器。 你的 shell 扩展的用户不久前就会发现有些东西是错误的。 每次使用"文件 + 打开"对话框时,将 100+ DLL 注入到进程中并没有被忽视,该程序对世界已经死了 5 秒或更长时间。
所以要么他做点什么,用像SysInternals的AutoRuns这样的实用程序清理他的机器。 如果你的扩展足够有用,你将幸存下来。 或者用户不采取任何对策,并且很高兴有一个硬上限。 扩展将失败,但用户无法说出原因。 您可能会接到支持电话,您知道该怎么做。
相关文章:
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 将数字转换为字母(例如:123 转换为一二三)
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 如何计算数据类型的范围,例如int
- 这是否符合C++标准:双响双响,例如!!(-0.0).
- 如何将CMSampleBufferRef/CIImage/UIImage转换为像素,例如uint8_t[]
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何使用文件中的文本,例如变量
- 输入值后,如何在一个括号下显示值,例如"{6,7,8,9}
- 给定一个类型,如何派生一个泛型更广泛的类型(例如,用于溢出安全求和)?
- 初学者问题:如何使用这些晦涩难懂的命令,例如C++中的'RenderWindow'
- C++:将值 int(例如:0x00AAFAD8)转换为指针(指针本身也是 0x00AAFAD8 值)
- 具有多种约束(例如重量、体积等)的背包
- 较高值 n 的分割错误(例如 n=999997)
- 我正在尝试制作一个程序,在添加 n 天(整数)后告诉一个人什么是一天(例如星期一等)
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 从/到 UTF-8/UTF-16 的转换需要(例如:utf8 -> 代码点,然后代码点到 utf16)或(例如:utf8 -> utf16)?
- 计算车辆之间的距离并设置速度,使距离保持不变,例如 5 米
- CRT 静态链接的 COM InProc 服务器的资源(例如 FLS 索引)耗尽