我最近为Windows应用程序编写了一个相当简单的代码,一个2048游戏,包括一些基础知识,如图标,背景和东西,4个不同方向的按钮和4x4静态窗口数组输出。 “守则”并非“非常好”。但是因为我还在学习,所以我发现它已经足够了(至少在我的电脑上)。我使用默认的VS13配置,在安装它之后没有改变任何东西,代码是用c ++编写的。 代码可以在这里找到:https://www.dropbox.com/sh/15y1daq2h3jm8p7/AADp0m1EfUJo3W2z315Zgd0Wa
现在有什么问题,程序会编译0警告或错误,当我通过调试或从我的电脑上的桌面运行它时,就像我预期的那样工作,但是当我将它上传到dropbox并想要启动时在笔记本电脑上说然后它不起作用。 此外,如果我尝试在Codeblocks中编译完全相同的代码,我就无法做出警告,许多函数都没有在范围内声明。 可以解释为什么会发生这种情况,我该如何解决?
答案 0 :(得分:0)
您面临的基本问题是您正在尝试在Visual Studio环境之外编译已编写的VCPP代码。
使用Visual Studio调试代码时,将在编译期间注入所有必需的文件/依赖项。
我建议使用Visual Studio打包代码,然后尝试在笔记本电脑上运行exe。
确保在目标计算机上安装了正确版本的VC ++运行时环境。 (您也可以选择在打包的设置中包含设置。)
从这里开始:https://stackoverflow.com/a/20890610/1477051
正如您所见,here,MSVCP DLL就是平台 C ++标准库的实现。简而言之,这意味着什么 你不能在不需要"东西的情况下分发你的应用程序。 这些库提供。所有编译器无论平台如何 需要某种标准库的实现。 通常,这是以库的形式分发的。
但是,您可以分发您的应用程序,以便"东西"是 直接内置到您的程序中,而不是在一个 单独的DLL。为此,您必须静态链接您的 申请标准图书馆。
有几种方法可以实现这一目标。一种方式是项目 设置。在"配置属性" > " C / C ++代码生成" > "运行时库",选择"多线程(/ MT)"而不是 " Mutithreaded(静态)"。
顺便说一下," D" in" MSVCP120D.dll"你上面提到的意思 "调试和#34;这意味着您正在尝试分发调试版本 你的计划。你应该(几乎)永远不要这样做。分发版本 而是建立。