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

时间:2014-08-22 11:03:31

标签: c++ windows visual-studio-2008 executable

将模拟应用程序部署到另一台计算机时遇到一些问题。直到几个星期前,它只是检查可执行文件和目标机器所需的DLL。但是,由于最近我无法在目标机器上启动应用程序而没有获得windows(7)消息,指出应用程序无法正常工作并需要关闭。但是,如果我将应用程序重命名为任何其他名称,它可以正常工作。重命名后,它不会重新开始。看来原来的名字是" simspray.exe"顺便说一句,不知怎的问题。

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

该应用程序使用一些库,主要是qt 4.8.3,qwt,nvToolsExtension(nvidia),glew。

我们已经尝试了以下内容: - 使用全新安装的Win7全新PC - depends显示没有遗漏的依赖项 - 没有运行防病毒程序,Windows防御者和防火墙禁用,没有其他第三方安全工具 - 除非在项目设置中重命名输出exe名称

,否则应用程序不会从visual studio中启动

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  1. 如果您在全新安装上尝试过它,那么它与平台或环境无关,它必须是源代码或构建过程中的内容。
  2. 如果它在几个星期前工作正常,那么它必定是过去几周引入的错误。您能检查一下源控制系统在那段时间内所做的更改吗?
  3. 尝试更改您重命名的文件名 - 更长或更短的文件名会有不同的结果吗?
  4. 尝试以愚蠢的方式搜索使用可执行文件名的代码,如下所示:

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

    或者这个:

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

    我知道的已知示例,但是如果您将文件重命名为正确的长度,这两个都会缓冲溢出但神奇地看起来有效。