Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.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++ Can';不要在任何其他计算机上运行windows应用程序_C++_Windows - Fatal编程技术网

C++ Can';不要在任何其他计算机上运行windows应用程序

C++ Can';不要在任何其他计算机上运行windows应用程序,c++,windows,C++,Windows,我最近为windows应用程序编写了一个相当简单的代码,这是一个2048游戏,包括一些基本内容,如图标、背景和东西、4个不同方向的按钮和4个用于输出的静态窗口数组。代码不是很“好”,但我还在学习,我发现它已经足够了,因为它可以工作(至少在我的电脑上)。我使用默认的VS13配置,在安装它之后没有改变任何东西,而且代码是用C++编写的。 代码可在此处找到: 现在让我感到困扰的是,该程序编译时没有警告或错误,当我通过调试或从PC上的桌面运行它时,它的工作方式与我预期的一样,但当我将其上传到dropbo

我最近为windows应用程序编写了一个相当简单的代码,这是一个2048游戏,包括一些基本内容,如图标、背景和东西、4个不同方向的按钮和4个用于输出的静态窗口数组。代码不是很“好”,但我还在学习,我发现它已经足够了,因为它可以工作(至少在我的电脑上)。我使用默认的VS13配置,在安装它之后没有改变任何东西,而且代码是用C++编写的。 代码可在此处找到:

现在让我感到困扰的是,该程序编译时没有警告或错误,当我通过调试或从PC上的桌面运行它时,它的工作方式与我预期的一样,但当我将其上传到dropbox并想在笔记本电脑上启动时,它就不起作用了。 此外,如果我试图在代码块中编译完全相同的代码,我也无法编译,并且会出现警告,说明许多函数没有在范围中声明。
任何人都可以解释为什么会发生这种情况,以及如何修复它吗?

您面临的基本问题是,您试图在Visual Studio环境之外为您编写的VCPP代码编译代码

当您使用VisualStudio调试代码时,所有必需的文件/依赖项都将在编译期间注入

我建议使用Visual Studio打包代码,并尝试在笔记本电脑上运行exe

确保目标计算机上安装了正确版本的VC++运行时环境。(您还可以选择将该设置与打包的设置一起包含。)


从这里开始:

如您所见,MSVCP DLL是平台的 C++标准库的实现。简言之,这意味着什么 你不能在不需要“东西”的情况下分发你的应用程序 这些图书馆提供的。不考虑平台的所有编译器 需要某种标准库的实现。 通常以库的形式分发

但是,您可以分发应用程序,这样“东西”就可以 直接内置到您的程序中,而不是以 单独的DLL。为了做到这一点,您必须静态链接 标准库的应用程序

有几种方法可以实现这一点。一种方法是在项目中 设置。在“配置属性”>“C/C++代码生成”> “运行时库”,选择“多线程(/MT)”而不是 “多线程(静态)”

顺便说一下,您上面提到的“MSVCP120D.dll”中的“D”是指 “调试”。这意味着您正试图分发的调试版本 你的节目。你不应该(几乎)这样做。发布 而是构建


你能告诉我确切的错误吗?缺少msvcp120d.dll是我下载后的第一个错误,它只是说我的应用程序不是一个有效的win32应用程序。你的笔记本电脑上安装了VC++运行时可再发行吗?我不太喜欢编程,不知道这类事情,你是说VS13的VC++可再发行吗?我刚刚下载并安装了它,但仍然存在相同的错误(0xc000007b)。好吧,现在它说应用程序无法正确启动。哇,好吧,现在我学到了一些非常有用的东西,谢谢,但是现在我在一个文件中遇到了一个错误,我甚至从未听说过你有任何机会可以帮我解决这个问题?我已将运行时库更改为/MT1>----已开始构建:项目:w2048,配置:调试Win32----1>2048Main.cpp 1>libcpmtd.lib(stdthrow.obj):错误LNK2019:未解析的外部符号\uuuu CrtDbgReportW在函数“void\uu cdecl std::\u Debug\u消息(wchar\t const*,wchar\t const*,unsigned int)”中引用(?_调试_message@std@@亚克斯布_W0I@Z)1>c:\users\admin\documents\visual studio 2013\Projects\w2048\Debug\w2048.exe:致命错误LNK1120:1未解决的外部设置编译器标志/MTd(多线程调试运行库)将解决此问题。您正在生成“调试”配置。调试配置仅在安装了Visual Studio的计算机上运行。在使用/MT时构建“版本”配置,以便能够在其他计算机上运行该程序。我做了,但我必须询问版本配置和调试配置之间的区别是什么?