我要做的事情很简单,这个单例是 Log 示例,用来写 Log。用简单的单例方法:
// log.h
class Log {
Log* instance() {
static Log log;
return &log;
}
}
这样做会在每个 DLL 文件里会生成各自的 DLL 实例,不能直接这么写。
在 Linux 下我是这个做可以生成一个跨 DLL 的单例:
// in log.h
extern C {
Log* get_logger()
}
class Log {
Log* instance() {
return get_logger();
}
}
#ifndef _USRDLL
extern C {
Log* get_logger() {
static Log instance;
return &instance;
}
}
#endif
这种方法在 linux/gcc 下有效。但在 windows/vc2015 编译时,提示连接不到get_logger函数。