Delphi 需要MSVCR120.DLL但未在项目部署中显示的应用程序-哪个单元需要它(如果有人知道)

Delphi 需要MSVCR120.DLL但未在项目部署中显示的应用程序-哪个单元需要它(如果有人知道),delphi,delphi-10.3-rio,Delphi,Delphi 10.3 Rio,我最近使用Rio、IB-Lite和FastReports VCL 6(pro)完成了一个新项目(仅限Windows)。一切都很好,安装在许多电脑上都没有问题。根据项目部署中所示的要求创建安装包(32位和64位) 不幸的是,我昨天收到一位用户的通知,当他试图在电脑上安装时,收到一条“需要MSVCR120.DLL”消息(他正在安装Win 8.1 64位电脑)。对此我有点惊讶,但知道名称中的“120”被称为Visual C++ +可再发行2012版本,我记得我有一台非常旧的笔记本电脑,可能没有安装(运

我最近使用Rio、IB-Lite和FastReports VCL 6(pro)完成了一个新项目(仅限Windows)。一切都很好,安装在许多电脑上都没有问题。根据项目部署中所示的要求创建安装包(32位和64位)

不幸的是,我昨天收到一位用户的通知,当他试图在电脑上安装时,收到一条“需要MSVCR120.DLL”消息(他正在安装Win 8.1 64位电脑)。对此我有点惊讶,但知道名称中的“120”被称为Visual C++ +可再发行2012版本,我记得我有一台非常旧的笔记本电脑,可能没有安装(运行XP)。果然,我安装了32位程序,并得到了错误。将MSVCR120.DLL和MSCVP120.DLL文件复制到旧电脑上的应用程序文件夹后,一切正常(实际上,有点让我吃惊)。对于这种情况,我更新了安装包以包含这些文件

所以,我的问题是:什么需要这种依赖性(如果有人知道的话),为什么项目部署不接受它?本项目使用的图书馆单位为:

//  Library Units used in project

// Data & FireDac
Data.DB, FireDAC.Comp.BatchMove, FireDAC.Comp.BatchMove.DataSet,
FireDAC.Comp.BatchMove.Text, FireDAC.Comp.Client, FireDAC.Comp.DataSet,
FireDAC.Comp.Script, FireDAC.Comp.ScriptCommands, FireDAC.Comp.UI,
FireDAC.DApt, FireDAC.DApt.Intf, FireDAC.DatS, FireDAC.Phys,
FireDAC.Phys.IB, FireDAC.Phys.IBBase, FireDAC.Phys.IBDef, 
FireDAC.Phys.IBLiteDef, FireDAC.Phys.Intf, FireDAC.Phys.SQLite,
FireDAC.Phys.SQLiteDef, FireDAC.Phys.SQLiteVDataSet, FireDAC.Stan.Async,
FireDAC.Stan.Def, FireDAC.Stan.Error, FireDAC.Stan.ExprFuncs,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
FireDAC.Stan.Pool, FireDAC.Stan.StorageJSON, FireDAC.Stan.StorageXML,
FireDAC.Stan.Util, FireDAC.UI.Intf, FireDAC.VCLUI.Error, FireDAC.VCLUI.Wait,

// Fast Reports VCL 6
frxChBox, frxClass, frxCross, frxDBSet, frxDCtrl, frxDesgn,
frxExportBaseDialog, frxExportCSV, frxExportDOCX, frxExportPDF, 
frxExportRTF, frxExportText, frxExportXLS, frxFDComponents, frxGradient,
frxOLE, frxRich,

// System
System.Actions, System.Classes, System.DateUtils, System.ImageList,
System.IniFiles, System.IOUtils, System.Math, System.StrUtils,
System.SysUtils, system.types, System.Variants,

//VCL
Vcl.ActnList, Vcl.BaseImageCollection, Vcl.Buttons, Vcl.ComCtrls,
Vcl.Controls, Vcl.DBCtrls, Vcl.DBGrids, Vcl.Dialogs, Vcl.ExtCtrls,
Vcl.FileCtrl, Vcl.Forms, Vcl.Graphics, Vcl.Grids, vcl.htmlhelpviewer,
Vcl.ImageCollection, Vcl.Imaging.jpeg, Vcl.Imaging.pngimage,
Vcl.ImgList, Vcl.Mask, Vcl.Menus, Vcl.StdCtrls, Vcl.ToolWin,
Vcl.VirtualImageList, Vcl.WinXCtrls,

//WinAPI
Winapi.Messages, Winapi.Windows;
包括DLL不是问题所在,更关心的是我应该如何知道首先包括它们


谢谢-Rick

可以尝试一个免费实用程序,它可以处理DLL依赖项。可能有助于显示是否有其他DLL导致尝试加载MSVCR210.DLL。正如@Brian所说,DependencyWalker将帮助您确定需要它的内容。同样值得指出的是,包括直接安装在你的安装中的DLL违反了MS指南,这说明你必须使用他们的安装程序来安装VC++运行时。我猜是需要C++运行时的ButoBaseClient库。不过你很快就会发现…@KenWhite,是的-昨晚的“修复”只是为了让用户开始。我会花更多的时间在安装包上“做正确的事”(一旦我弄明白了-使用Inno安装程序)。感谢所有指向Dependency Walker的指针@SertacAkyuz,你是对的,是Interbase客户端库需要这两个DLL。你可以尝试一个免费的实用程序来处理DLL依赖项。可能有助于显示是否有其他DLL导致尝试加载MSVCR210.DLL。正如@Brian所说,DependencyWalker将帮助您确定需要它的内容。同样值得指出的是,包括直接安装在你的安装中的DLL违反了MS指南,这说明你必须使用他们的安装程序来安装VC++运行时。我猜是需要C++运行时的ButoBaseClient库。不过你很快就会发现…@KenWhite,是的-昨晚的“修复”只是为了让用户开始。我会花更多的时间在安装包上“做正确的事”(一旦我弄明白了-使用Inno安装程序)。感谢所有指向Dependency Walker的指针@SertacAkyuz,你是对的,这是需要这两个DLL的Interbase客户端库。