Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ 在静态库中使用MFC_Visual C++_Mfc_Installation_Static Libraries_Installshield - Fatal编程技术网

Visual c++ 在静态库中使用MFC

Visual c++ 在静态库中使用MFC,visual-c++,mfc,installation,static-libraries,installshield,Visual C++,Mfc,Installation,Static Libraries,Installshield,我已经创建了带有选项“在静态库中使用MFC”的MFC应用程序 我正在使用Installshield为我的应用程序创建安装。我应该在installshield中添加哪些依赖文件或“合并模块” P>是否需要添加“微软C++运行库”或“微软Visual C++ MFC”合并模块?< P>至少内存是否服务,否。如果在静态库中使用MFC,则还需要静态链接到标准库。除非您在其他DLL上添加了其他依赖项,否则您应该有一个独立的可执行文件 如果您愿意,您可以/可以通过查看来确定。静态链接意味着foo.lib在

我已经创建了带有选项“在静态库中使用MFC”的MFC应用程序

我正在使用Installshield为我的应用程序创建安装。我应该在installshield中添加哪些依赖文件或“合并模块”


<> P>是否需要添加“微软C++运行库”或“微软Visual C++ MFC”合并模块?

< P>至少内存是否服务,否。如果在静态库中使用MFC,则还需要静态链接到标准库。除非您在其他DLL上添加了其他依赖项,否则您应该有一个独立的可执行文件


如果您愿意,您可以/可以通过查看来确定。

静态链接意味着foo.lib在链接器阶段嵌入到myapp.exe中。不存在对foo.dll的依赖关系,不需要重新分发。您还应该了解,虽然静态链接使您的部署更容易,但实际上它被视为安全漏洞,因为如果在foo.lib/foo.dll(本例中为MFC)中发现漏洞,则Microsoft无法通过更新WinSXS缓存中的版本来修补您的应用程序。这将取决于您在构建机器上包含最新的redist、重建和重新部署


我强烈建议创建一个具有基本快照的虚拟机,该快照表示您希望支持的最旧操作系统,然后在那里测试您的安装程序。这将有助于识别缺失的依赖项,然后可以使用依赖项Walker、ILDasm/.NET Reflector和ProcessMon等工具来解决这些依赖项。

很多时候,我们都面临exe和dll的大小问题,而这些问题比以前的版本更大。 这可以通过使用项目属性来解决

菜单“项目” -属性。。。 配置属性-->“在静态库中使用MFC使用MFC” 及

在“C/C++选项”-->选项卡“代码生成”-->为静态MFC选择“多线程/MT”


如果我们选择上述选项,则不需要在PC上安装VC2008可再发行版本,exe或dll的大小较小

谢谢。我在我的应用程序中使用了MSXML。所以我在installshield中添加了MSXMLDLL。如果我们使用静态MFC库,我不确定是否要添加“C++运行时库”合并模块。我会试试依赖行者。谢谢你的明确解释。这给了我静态链接Mfc的优点/缺点。