msvc静的にQtをコンパイルした後ディレクトリを変更できない問題を解決
サンプル処理コード:
#include <QCoreApplication>
#include <QDebug>
#include <QDir>
#include <QFile>
#include <QRegExp>
#include <iostream>
#include <qt_windows.h>
#include <QDirIterator>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString appPath = QCoreApplication::applicationDirPath();
qDebug()<<QStringLiteral(“現在のパス:")+appPath;
QFile check;
check.setFileName(appPath+"/bin/qmake.exe");
if(!check.open(QIODevice::ReadOnly)){
std::cout<<“\n\n<<<<<<<<Qtのインストールのルートディレクトリに置く>>>>>>>>\n\nエンドで終了"<<std::endl;
exit(0);
}
check.close();
check.setFileName(appPath+"/bin/qt.conf");
check.open(QIODevice::ReadWrite|QIODevice::Text);
check.resize(0);
check.write(“[Paths]\nPrefix=..");
check.flush();
check.close();
QDir dir;
QRegExp PRL(“\\w:\\\\.*\\\\lib");
PRL.setMinimal(true);
QStringList filters;
filters <<“*.prl";
dir.setPath(appPath);
dir.setNameFilters(filters);
QDirIterator iter(dir,QDirIterator::Subdirectories);
appPath.replace(“/","\\\\");
appPath.append(“\\\\lib");
while (iter.hasNext()){
qDebug()<<“start";
iter.next();
QFileInfo info=iter.fileInfo();
if (info.isFile()){
QString filename = info.absoluteFilePath();
QFile *file = new QFile(filename);
file->open(QIODevice::ReadWrite|QIODevice::Text);
QString read_data = file->readAll();
read_data.replace(PRL,appPath);
file->resize(0);
char *ch;
ch = read_data.toLatin1().data();
file->write(ch);
file->flush();
file->close();
}
}
qDebug()<<“成功!";
return a.exec();
}