我要做的事情很简单,这个单例是 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
函数。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.