qt 一个变量声明引用 undefined reference to

fengyoujie 2013-01-09 01:30:12
诸位老师好!
有一个问题:IDE是qtCreator。 我定义了一个类LogUtil,头文件如下LogUtil.h。

#ifndef LOGUTIL_H
#define LOGUTIL_H
#include <QDir>
#include "QsLog.h"

class LogUtil: public QObject
{
Q_OBJECT
public:
static QString getCurrentLogName(){return currentLogFileName ;}
static void setCurrentLogName(QString fileName);
static void createLogFile(QString fileName);
static int getLogSize(QString fileName);
static void log(QString dateTime,QString eventStatus,QString logMsg,QString connectDevice,QString DeviceIp,QString remark);

private:
LogUtil(){}
static QString currentLogFileName;
};

#endif // LOGUTIL_H


源文件LogUtil.cpp

#include <QObject>
#include "LogUtil.h"
#include "QsLog.h"
#include "QsLogDest.h"

void LogUtil::setCurrentLogName(QString fileName)
{
LogUtil::currentLogFileName = fileName ;
}

int LogUtil::getLogSize(QString fileName){
int size = 0;
QFile file(fileName);

if (!file.open(QIODevice::ReadOnly))
{
return 1;
}

size = file.size();
file.close();
return size;
}

void LogUtil::createLogFile(QString fileName)
{
QsLogging::Logger& logger = QsLogging::Logger::instance();
logger.setLoggingLevel(QsLogging::TraceLevel);
//const QString sLogPath(QDir(Settings::SavePath()).path()+"/log/"+fileName);
QString dirPath = "e:/upload";
const QString sLogPath(QDir(dirPath.append("/log/")).path()+fileName);
QsLogging::DestinationPtr fileDestination( QsLogging::DestinationFactory::MakeFileDestination(sLogPath) );
QsLogging::DestinationPtr debugDestination(QsLogging::DestinationFactory::MakeDebugOutputDestination() );
logger.addDestination(debugDestination.get());
logger.addDestination(fileDestination.get());

QString currentFileName = "e:/upload";
currentFileName.append("/log/").append(fileName);
setCurrentLogName(currentFileName);
}

void LogUtil::log(QString dateTime, QString eventStatus, QString logMsg, QString connectDevice, QString DeviceIp, QString remark)
{
QLOG_INFO()<<" dateTime:" +dateTime +" eventStatus: " +eventStatus+" LogMsg: "+logMsg+" connentDevice: "+connectDevice+" DeviceIp: "+DeviceIp+" remark:"+remark;
}


编译的时候报如下错误:

release/moc_LogUtil.o -L"c:\QtSDK\Desktop\Qt\4.7.4\mingw\lib" -lQtCore4
release/LogUtil.o:LogUtil.cpp:(.text+0x9c): undefined reference to `LogUtil::currentLogFileName'
collect2: ld returned 1 exit status
mingw32-make.exe[1]: Leaving directory `C:/Users/youjie/Desktop/log_example-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK____'
mingw32-make.exe[1]: *** [release\log_example.exe] Error 1
mingw32-make.exe: *** [release] Error 2
12:35:58: 进程"C:\QtSDK\mingw\bin\mingw32-make.exe"退出,退出代码 2 。
构建项目log_example 时发生错误 (目标: 桌面)
当执行构建步骤 'Make'时


不知何故,请诸位老师指点,多谢了。
...全文
475 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengyoujie 2013-01-09
  • 打赏
  • 举报
回复
多谢楼上二位老师。问题解决。结贴给分。
jdwx 2013-01-09
  • 打赏
  • 举报
回复
引用 1 楼 openXMPP 的回复:
在.cpp里加入 QString LogUtil::currentLogFileName = "";
+1 补充一下,建议写在#include "QsLogDest.h"下面的位置,所有函数之外。
乔巴好萌 2013-01-09
  • 打赏
  • 举报
回复
在.cpp里加入 QString LogUtil::currentLogFileName = "";

16,203

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧