一、问题描述
做项目的时候,我所承担的.exe在总体项目中属于被别人调用的一部分。在单独调试.exe时,打开某文件未加路径名,运行一路顺畅。最后联调时却出了岔子,找不到文件。下面是我写的菜菜代码
FILE *fr; fr = fopen("waveform.wav", "r");
if (fr == NULL)
{
// 未找到文件
}
else
{
// 执行后续代码
}
二、问题分析
主exe文件所在目录和我写的.exe所在目录不一致,且主exe文件会强制修改程序运行路径。当主exe与我写的.exe一起运行,可能会造成fopen函数打开的路径并非我所在的.exe所在目录,自然就找不到所在目录的文件夹。
三、问题解决
QString exePath = QCoreApplication::applicationDirPath(); // 获取当前目录
QString wavName = exePath + "/waveform.wav";
FILE *fr; fr = fopen(wavName.toUtf8(), "r");
if (fr == NULL)
{
// 未找到文件
}
else
{
// 执行后续代码
}
改成上述代码即可,获取该程序.exe所在路径,并用fopen函数打开。