案例:在Comm文件夹下,有两个类:MsgBox、Log。
如下为 MsgBox.h 的内容:
// MsgBox.h
#if defined(MSGBOX_STATICLIB)
#define MSGBOX_EXPORT
#else
#if defined(MSGBOX_LIB)
#define MSGBOX_EXPORT Q_DECL_EXPORT
#else
#define MSGBOX_EXPORT Q_DECL_IMPORT
#endif
#endif
class MSGBOX_EXPORT MsgBox
{
public:
MsgBox() {}
~MsgBox() {}
void MsgA() {}
...
}
如下为 Log.h 的内容:
// Log.h
#if defined(LOG_STATICLIB)
#define LOG_EXPORT
#else
#if defined(LOG_LIB)
#define LOG_EXPORT Q_DECL_EXPORT
#else
#define LOG_EXPORT Q_DECL_IMPORT
#endif
#endif
class LOG_EXPORT Log
{
public:
Log() {}
~Log() {}
void LogA() {}
int LogB() {}
...
}
添加文件 Information.h 文件,可以解决多个类封装为一个动态库的问题。
#ifndef __INFORMATION_H__
#define __INFORMATION_H__
namespace
{
class MsgBox;
class Log;
}
#endif // !__INFORMATION_H__
注:如何封装的问题,请自行搜索。