fgets 提供资产,试图重新分发 vs2010 MFC 应用程序
Posted
技术标签:
【中文标题】fgets 提供资产,试图重新分发 vs2010 MFC 应用程序【英文标题】:fgets gives assetion, trying to redistribute vs2010 MFC application 【发布时间】:2013-09-18 00:03:09 【问题描述】:我有一个简单的应用程序,它读取一些文本文件并进行一些计算并写入一些文本文件。在我的开发机器上完美运行(Server2008R2 VC++ 2010)。即使我已经安装/运行了 vs2010 redistribute x86,我也无法让它在 Win7 机器上运行。
我遇到的第一个错误是缺少 mfc100ud.dll(是的,我正在使用调试,如果我尝试发布它只会崩溃,因为调试会告诉你出了什么问题)。我将 mfc100ud.dll 放在应用程序的目录中,现在 fgets 断言如下所示。 str 不为空,文件确实打开成功。
我错过了什么?
我的目标是在 Win7 机器上运行 MFC 应用程序,无需安装 vs2010。
另一个考虑因素,我使用 MFC 的唯一原因是 COleTimeDate 功能。我一直在寻找替代品,但没有找到任何可行或简单易用的方法。
谢谢。
Assertion Error
【问题讨论】:
运送您的 MFC 应用程序的 debug 版本..?呃。如果这在机器上的发布版本安装中崩溃,您仍然可以调试它(可能不是交互式的,但至少是崩溃分析)。确保您的发布版本具有完整的 pdb 集,并在目标计算机上使用 WinDbg。正确设置符号路径和源文件包,你可能会得到你需要的东西(公平警告,在描述 WinDbg 接口时,“健壮”是一种严重的轻描淡写)。 ***.com/questions/8634158/… 【参考方案1】:如果文件流指针(由 fopen 提供)为 NULL,则会发生此错误。 是不是你用了fopen之后就没有错误检查了?
基本上使用“静态链接”到 MFC 和 CRT。比不需要安装和复制任何运行时文件。
【讨论】:
【参考方案2】:可再发行程序集仅适用于发布版本。如果您真的想分发调试版本,您有两种选择:
静态链接您的应用,因此您不需要任何共享 DLL(例如 mfc100ud.dll) 与您的应用程序(在您的应用程序文件夹中)一起分发所有相关的 DLL。您可以使用depends.exe检查依赖关系【讨论】:
以上是关于fgets 提供资产,试图重新分发 vs2010 MFC 应用程序的主要内容,如果未能解决你的问题,请参考以下文章