1、dll加载使用:
typedef void* (*TInitObjectLayer)();
typedef void (*TUnInitObjectLayer)();
typedef void* (*TGetObjectLayerProjectObject)();
//定义对象组态dll插件中的函数变量
TInitObjectLayer
m_fObjInit;
//对象dll初始化函数指针
TUnInitObjectLayer
m_fObjUninit;
//对象dll释放函数指针
TGetObjectLayerProjectObject
m_fObjGetProObj; //对象dll获取工程对象指针
QString sObjDllName = QCoreApplication::applicationDirPath() + "/ObjectLayer";
QLibrary lib(sObjDllName);
if(!lib.load()) return;
m_fObjInit = (TInitObjectLayer)lib.resolve("InitObjectLayer");
m_fObjUninit = (TUnInitObjectLayer)lib.resolve("UnInitObjectLayer");
m_fObjGetProObj = (TGetObjectLayerProjectObject)lib.resolve("GetObjectLayerProjectObject");
if(NULL == m_fObjInit)
{
qDebug("Error:Load ObjectLayer Failed!");
return;
}
gpProObj = (TDMSObject*)m_fObjInit();
2、相对路径、绝对路径获取方式:
QString sFileTmp = QFileDialog::getOpenFileName(pParent, sCaption, sFileName, sFilter);
if("" == sFileTmp)
{
return false;
}
QDir dir(QApplication::applicationDirPath());
sFileName = dir.relativeFilePath(sFileTmp);
QDir dir(QApplication::applicationDirPath());
QString sAbsRunImg = dir.absoluteFilePath(sRunImgPath);