Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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
C 仅Win32控制台应用程序,防止“缺少dll”对话框_C_Visual Studio 2010_Winapi_Console Application - Fatal编程技术网

C 仅Win32控制台应用程序,防止“缺少dll”对话框

C 仅Win32控制台应用程序,防止“缺少dll”对话框,c,visual-studio-2010,winapi,console-application,C,Visual Studio 2010,Winapi,Console Application,我已经构建了一个VS2010控制台应用程序。当我在没有必要dll的机器上运行此应用程序时,会弹出一个对话框,其中显示以下消息:由于您的计算机缺少MSVCR100.dll,程序无法启动。这很公平 问题是程序会一直挂起,直到有人单击OK 这个程序是一个复杂的自动构建设置的一部分,所以我真的需要用一个错误代码来终止它 是否有任何解决方案(例如VS2010项目设置选项)可用于修复此问题?您可以将项目更改为静态链接CRT而不是动态链接。它将运行时库选项设置为多线程而不是多线程DLL 我同意,这将解决问题。

我已经构建了一个VS2010控制台应用程序。当我在没有必要dll的机器上运行此应用程序时,会弹出一个对话框,其中显示以下消息:由于您的计算机缺少MSVCR100.dll,程序无法启动。这很公平

问题是程序会一直挂起,直到有人单击OK

这个程序是一个复杂的自动构建设置的一部分,所以我真的需要用一个错误代码来终止它


是否有任何解决方案(例如VS2010项目设置选项)可用于修复此问题?

您可以将项目更改为静态链接CRT而不是动态链接。它将运行时库选项设置为多线程而不是多线程DLL


我同意,这将解决问题。但是为了满足我的好奇心,我想知道是否有可能将对话框重定向到控制台。在某些情况下,控制台应用程序被迫使用GUI似乎是错误的。我认为没有一种方法可以重定向对话框,我从来没有遇到过这种方法。我唯一能想到的另一个选择是尝试有问题的DLL,使用异常处理程序捕获故障并通过向控制台发送消息中止进程。我不知道这是否适用于CRT DLL。@Jakob一般来说,您可以通过LoadLibrary和GetProcAddress手动加载DLL,然后您可以随意处理故障。但是对于CRT DLL,我认为静态链接是一个不错的选择。你可以在启动应用程序之前尝试调用,假设你控制了启动过程,尽管我不知道它是否适用于DLL not found message box.arx是否正确。我刚刚遇到了同样的问题,SetErrorModeSEM\u FAILCRITICALERRORS阻止了模式错误消息,相反,CreateProcess调用成功,但进程返回状态\u DLL\u NOT\u FOUND作为退出代码