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 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

试图理解 fgets()

vs2010 重新配置帮助文档

vs2010如何生成单个项目,每次编译所有的项目都全部重新生成了

强制 fgets 阻止(即伪造“交互式设备”)

Rails:从 Cloudfront 提供压缩的静态资产

装好vs2010,为啥没有重新生成解决方案