【发布时间】:2015-05-01 22:39:03
【问题描述】:
我使用 Qt creator 在 Qt/C++ 中编写了一个应用程序。发生的事情是,在 Qt creator 中,应用程序运行良好(android 和 mac 之间的文件传输)。
一旦我生成应用程序并从 Qt 创建器中运行它,一些文件复制就会一直失败。
我认为它来自于我们运行调试的方式与官方应用相比。
之间是否存在任何行为问题:
if(item)
CopyFile(LocalPath, Android_device);
和
if(item) {
ret = CopyFile(LocalPath, Android_device);
if(ret != 0)
...
我不问编码差异的情况,但主要是在情况 1 中,应用程序是否没有等待 Copy 的反馈,以防万一,我们是否需要等待反馈才能继续,因为我引入了“如果”
该应用程序没有使用多线程,它只是一个基本的 Qt/C++ 应用程序
谢谢
【问题讨论】:
-
您是否评估 CopyFile 的返回值不会产生“等待”或“不等待”的区别。如果有差异,那是您没有向我们展示的部分... if(ret != 0).... 但我会先看看您的环境是否有差异。您的 QtCreator 是否设置了一些创建者之外没有的环境变量?
-
当您从 Qt Creator 外部运行应用程序时,您的工作目录会发生变化,这可能会破坏相对路径。你能看到哪些文件没有正确复制吗?
-
@Simon:就 MTP 而言:应用程序和设备之间的文件复制工作。如果我移动一个不起作用的文件夹,这是递归性。通过考虑这一点,我立即想到的唯一一件事是,对我从我的 mac 复制到 android 设备的文件夹中的内容的评估返回,当 Qt 创建者用完并且应用程序正确处理时,里面没有文件在 QTcreator 内部时的递归性。我主要处理所有错误并且没有错误发生
-
听起来您正在使用 QT TCP 套接字。
-
听起来好像您依赖于应用程序的工作目录。不要那样做。当您从 Qt Creator 启动它时,它会设置一个特定的工作目录,该目录通常不同于 shell、Explorer 或 Finder 设置的任何工作目录。