1.控制台和界面程序
qt:
控制台程序:QCoreApplication::applicationDirPath()
界面程序:QApplication::applicationDirPath();
windows API:
GetModuleFileName
2动态库
qt:
动态库中无法使用QCoreApplication::applicationDirPath()或QApplication::applicationDirPath();
测试:
class TESTLIBDIRSHARED_EXPORT TestLibDir
{
public:
TestLibDir();
void PrintCurrentDir();
};
void TestLibDir::PrintCurrentDir()
{
qDebug()<<QDir::currentPath();
}
其dll生成目录为 \TestLibDir\TestLibDir\Moc\Debug\debug
调用:
#include <QCoreApplication>
#include "testlibdir.h"
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
TestLibDir te;
te.PrintCurrentDir();
qDebug()<<QCoreApplication::applicationDirPath();
return a.exec();
}
结果:
“/TestLibDir/TestLibDirTest/Moc/Debug”
“/TestLibDir/TestLibDirTest/Moc/Debug/debug”
所以dll工程中的路径由主程序调用传参传入