gpt4 book ai didi

c++ - 编译的应用程序可执行文件崩溃,除非重命名。为什么?

转载 作者:可可西里 更新时间:2023-11-01 14:35:59 24 4
gpt4 key购买 nike

我在将模拟应用程序部署到另一台计算机时遇到了一些问题。直到几周前,只需将可执行文件和所需的 DLL check out 到目标机器,它还可以正常工作。但是,由于最近我无法在目标机器上启动应用程序而没有收到一条 windows (7) 消息,指出该应用程序无法正常工作并且需要关闭。但是,如果我将应用程序重命名为任何其他名称,它将正常工作。重命名后,它不会再次启动。顺便说一下,原来的名称“simspray.exe”似乎是个问题。

有人知道问题出在哪里吗?(尽管有重命名解决方法,我真的很好奇)

应用使用了一些库,主要是qt 4.8.3、qwt、nvToolsExtension(nvidia)、glew。

我们已经尝试了以下方法:- 使用全新安装 Win7 的全新 PC- depends 显示没有丢失的依赖项- 没有运行防病毒程序,禁用 Windows Defender 和防火墙,没有其他第三方安全工具- 除非在项目设置中重命名输出 exe 名称,否则应用程序不会从 visual studio 中启动

感谢您的帮助。

最佳答案

  1. 如果您在全新安装上尝试过它,那么它与平台或环境没有任何关系,它一定是源代码或构建过程中的某些东西。
  2. 如果它在几周前运行良好,那么它一定是最近几周引入的错误。您能否检查您的源代码控制系统以了解当时所做的更改?
  3. 尝试改变您重命名的文件名 - 更长或更短的文件名会产生不同的结果吗?

尝试以愚蠢的方式搜索使用可执行文件名称的代码,如下所示:

char buffer[sizeof(argv[0])+1];
strcpy(buffer, argv[0]);

或者这个:

int len = strlen("simspray.exe");
char *buffer = malloc(len);
strcpy(buffer, GetCommandLine());

我知道人为的例子,但如果您将文件重命名为正确的长度,这两个都会发生缓冲区溢出,但似乎神奇地起作用了。

关于c++ - 编译的应用程序可执行文件崩溃,除非重命名。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25445520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com