【发布时间】:2010-12-23 03:12:30
【问题描述】:
我运行一个Qt应用程序,我想知道的是这个运行的二进制文件名。
【问题讨论】:
标签: qt
我运行一个Qt应用程序,我想知道的是这个运行的二进制文件名。
【问题讨论】:
标签: qt
我必须(部分)不同意其他 cmets 这不是 Qt 问题:有一个 Qt 方法 QCoreApplication::applicationFilePath() 它给出了可执行文件的目录+文件名。
在 Linux 上这将尝试使用 /proc,在 Windows 上可能会使用 GetModuleFileName()。根据文档,它将回退到argv[0]。
然后您可以使用QFileInfo 将其拆分为可执行名称和目录。
QFileInfo(QCoreApplication::applicationFilePath()).fileName()
【讨论】:
QCoreApplication::applicationDirPath()。
QCoreApplication::applicationFilePath: Please instantiate the QApplication object first
QApplication a(argc, argv); QString appPath = a.applicationFilePath();
Qapplication 解析命令行参数,第一个条目是可执行文件的名称 - 这与标准 C 中的 argv[0] 大致相同,但如果您有 Unicode 构建或应用程序作为服务启动
【讨论】:
这又不是一个真正的 Qt 问题。要查找执行的二进制文件的名称,类似于。
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
cout << argv[0] << endl;
return 0;
}
【讨论】:
argv[0] 不需要实际保存有关可执行文件的任何 有用信息。详情请见stackoverflow.com/questions/2794150/when-can-argv0-have-null/…。