【发布时间】:2017-02-24 08:02:00
【问题描述】:
来自非 C++ 背景,我正在尝试使用 Qt 重写一些项目。我需要创建一个共享库来容纳常用的“实用程序”功能。我不需要一个类,因为所有函数都是静态的,所以我的想法是创建一个包含所有函数的命名空间,但是使用 Qt 提供的共享库模板来完成这个是行不通的。这可能吗?如果是这样,有人可以指出我正确的方向吗?
例如,我想将下面的 Utils 函数放入共享库中,这样我就不必将文件复制到我想使用它们的所有项目中。
Utils.h
#ifndef UTILS_H
#define UTILS_H
#include <QtCore>
#include <QString>
#include <QDateTime>
#include <QFileInfo>
namespace Utils {
QString getAppName();
bool stringToBool(const QString &str);
QString getFileTimeStamp();
QString getPacketTime();
QString getTodayStamp();
}
#endif // UTILS_H
Utils.cpp
#include <Helpers/utils.h>
namespace Utils {
QString getAppName()
{
return QFileInfo(QCoreApplication::applicationFilePath()).baseName();
}
bool stringToBool(const QString &str)
{
return str.contains("1");
}
QString getFileTimeStamp()
{
return QDateTime::currentDateTime().toString("ddhhmmsszzz");
}
QString getPacketTime()
{
return QDateTime::currentDateTime().toString("hh:mm:ss");
}
QString getTodayStamp()
{
return QDateTime::currentDateTime().toString("MMddyy");
}
}
【问题讨论】:
-
不清楚为什么使用Qt? Qt 的哪一部分将在该库中使用?这些来自动态库的函数实现了哪些功能?
-
因为 Qt 是我用来重写应用程序的框架,并且我正在尝试使用 Qt Creator IDE 中的共享库向导。
-
我看到您已在问题中添加了代码。非常简单。 1. 会有对Qt本身的依赖。 2. 如果它不会被多个应用程序使用,我什至不会尝试使用 Qt 创建动态库。 3. 如果它会被许多独立的应用程序使用但使用相同的Qt版本,那么有理由做动态库,它应该足够大和复杂来满足所有工作。如果它只被一个应用程序使用,那么你不需要动态库。您的维基:wiki.qt.io/…
-
当你说“不工作”时,请更具体一点。你期待什么,实际发生了什么? :)