2017-10-16 264 views
0

我试图发布无需安装Visual Studio 2015即可执行的mfc应用程序。 首先,当我在谷歌上时,这表明我可以通过安装vC++可再分发包。 所以我安装了软件包,但它不起作用。 我收到了错误消息。该消息是 - “程序无法启动,因为缺少mfc140ud.dll ....”如何在任何电脑上执行MFC应用程序

其次,有人说,释放应用程序而不是调试模式可以在没有Visual Studio的情况下执行。 所以我编译应用程序在发布模式,然后我没有得到错误消息,但它没有执行。这有什么问题? 我能做什么?

+0

***该程序无法启动,因为缺少mfc140ud.dll ***您无权在未安装Visual Studio的计算机上运行调试版本。这违反了Visual Studio的许可。这是可再发行组件没有调试dll的原因。 – drescherjm

+0

感谢您的关注。 是的,你说得对。 因此,我可以在没有安装Visual Studio的机器上使用版本构建而不是调试构建? –

+0

当然可以。在没有Visual Studio的情况下允许发布二进制文件 – drescherjm

回答

2

您分发应用程序的DEBUG版本。你可以通过它所说的无法找到的DLL的名称来判断。 “mfc140ud.dll”的“d”后缀表示它正在寻找MFC库的DEBUG版本。我不认为可再发行组件包含调试版本。也不应该。

尝试向您的客户发布RELEASE构建。

+0

谢谢,乔。其实,我试过发行版,但它不起作用。 我说的是该应用程序没有执行。 –

+0

好吧,这使它更难一点。很显然,没有错误信息就会失败。在这个阶段你有几个方法来弄明白。一种方法是获取Windows相关性检查器的副本,在客户端机器上运行它,并在那里加载已发布的应用程序,然后查看它是否告诉您任何DLL丢失。你可以在这里得到它: http://www.dependencywalker.com/ 如果问题是缺少DLL文件,会立刻告诉你 – Joe

+0

另一种方法(假设它不是一个缺少DLL)将增加一些临时将代码记录到您的应用。在它启动后(尽快),你的代码在“C:/ temp”或其他东西中打开一个文本文件,并写出一行文本。如果你在客户端上运行你的发布版本,并且你得到了这个文件,至少你知道没有隐式加载的DLL丢失。 – Joe

0

您的应用程序不会在其他PC上运行,因为它是调试版本,编译后发布并分发到具有Visual Studio可再发行组件包的其他PC上。

如果您希望您的应用程序运行不依赖于mfc140u.dll,您可以简单地将您的应用程序与MFC静态链接。这很容易实现进入您的项目属性。

Project properties, General, Use of MFC

您的应用程序exe将更大,但你不会再有与这些样的错误的打扰。请注意,尽管此方法也适用于调试,但由于多种原因,最好不要在其他机器上分发调试代码。

相关问题