我的版本.exe无法在其他电脑上运行
My Release .exe Cant Run on Other PCs
我有一个用Visual Studio 2008 C++制作的小程序,它基本上创建和修改简单的文本文件。我不会在这里复制代码,但如果有人想看看:www.joggingbenefits.net/hcode.txt
我的问题是 - 我想从这段代码中创建一个.exe,它可以在其他不一定安装Visual Studio或redist软件包的Windows PC上运行。
到目前为止我尝试过:
- 将项目配置从"调试"更改为"发布"
- 在所有 4 个提供的运行时库之间切换(在代码生成下)
- 将生成的每个.exe保存在我的"发布目录"中
- 尝试在没有安装Visual Studio的PC上运行其中的每一个,并且它们都不起作用...它只运行了大约半秒钟,然后就消失了。
不确定我做错了什么,我一定在这里错过了一些非常重要的东西......回顾一下:我确实将编译模式更改为发布,并且我确实尝试更改运行时库,静态/动态库,但生成的 exe 都无法运行......
PS - 这些程序都以管理员身份运行,并禁用了防病毒软件等,所以事实并非如此。另外,我没有链接到任何DLL,所有包含的库都是标准的。
知道吗?
在非工作系统上使用 DependencyWalker 打开.exe。它将显示缺少哪些DLL(通常是一些VS2008运行时)。
此外,在 Windows 事件管理器中的错误下,当您尝试运行应用程序时,您还应该获得错误描述,了解它遗漏了什么。当您知道丢失了什么文件时,您可以谷歌它,并检查它去什么可再发行。
您已经创建了一个命令行程序。当 Windows 打开此程序时,它会为输入和输出创建一个命令窗口,程序完成后,它会立即关闭窗口。
如果打开自己的命令窗口并从那里运行它,则程序完成时窗口不会关闭。
如果您仍然希望程序直接运行但看到输出,则可以在程序末尾添加暂停。
cout << "Please type any key to finish" << endl;
char ch;
cin >> ch;
尝试访问"代码生成"属性页,并确保运行时库读取/MT 或/MTd 而不读取其他任何内容(尤其是/clr)。对项目进行干净构建,并确保输出状态为/MTd 并且 IDE 未注入任何其他冲突标志。我对VS2010没有太多经验,但这就是我对2008所做的一切。
除了其他人提到的DependencyWalker技巧(值得先做),我还建议在目标PC上临时安装Windows调试工具(这只是一个小安装)。 运行windbg
并选择File -> Open Executable
然后使用 F5 运行。 当应用程序爆炸时,您将获得更有意义的解释,说明它在错误消息和调用堆栈方面出错的地方。 我的猜测是缺少dll,或者可能与您自己系统上的不同版本的dll发生冲突。
您可以使用DependencyWalker执行的另一件有用的事情是在目标PC上运行它并选择Profile
选项,这将在搜索dll时为您提供大量信息。
请注意,这两种方法都需要您在目标PC上安装某些东西,但这只是暂时的,如果不这样做,您只会猜测为什么会出错。
尝试在可执行文件不起作用的计算机上安装"Microsoft Visual C++ 2010 可再发行组件包"。
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 在其他文件中创建类时在 c++ 项目中不起作用
- 类与私有变量的其他类之间的线程安全性
- C++在变量给定的指定时间内关闭电脑
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- GlobalAlloc而不是其他分配方法
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 断言中的Fold表达式在某些计算机上编译,但在其他计算机上不编译
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 结构和双指针隐藏在其他结构中,多层混淆
- UE4在OnComponentBeginOverlap上铸造其他actor
- CNTK:->转发或 ->评估某些电脑上的崩溃,而不是其他电脑上的崩溃
- 我的电脑不接受 s.length,但其他编译器可以
- 我的版本.exe无法在其他电脑上运行
- Qt GUI应用程序可以在我的电脑上运行,但不能在其他电脑上运行
- Flash影片在其他电脑上不显示