C++ 在动态库之间共享静态库中的数据
我有下一个情况:C++ 在动态库之间共享静态库中的数据,c++,qt,singleton,qtcore,C++,Qt,Singleton,Qtcore,我有下一个情况: A类的静态库;(记录器) 将类A实例创建为单例的主应用程序 不同的延迟加载动态库(插件),链接到(1.),需要使用类A的实例 如何在插件(3.)之间共享主应用程序(2.)的单例?Qt/C++中有什么特点吗?< /P> 目前我正在使用基于共享内存的丑陋解决方案,我认为这是不对的 我正在考虑使用依赖注入模式进行重构,但它有一些限制 样本: 静态库“log.lib”: 主应用程序“app.exe”: 插件1“plg1.dll” 插件2“plg2.dll” 对,所以顺序是: 您似乎没
- 您似乎没有在单例用例中使用
- 您最初的问题与Qt没有太大关系
- 这与静态库的区别几乎无关
- 您可以让插件接口接受一个记录器变量,这样您就可以使用应用程序中的实例来设置它
Q\u GLOBAL\u STATIC
,而是使用QObject
继承,并使用我们在项目中实现的QCoreApplication
简化工作
上述版本也是线程安全的。不清楚您的要求,请粘贴一些代码。如果我正确理解了我不确定的内容,您可能希望从库中实例化singleton,可能是通过插件接口,但是您写的共享是什么。。。。我还不清楚它与静态使用库的关系。是的,您理解正确。但我不想通过库接口实例化logger,因为库之间有很多复杂的关系(共享/静态/延迟加载/混合情况)。太好了,谢谢。这解决了一切。另外,很抱歉英语不好,我正在努力学习;)
struct Log
{
void write( QString text );
};
Log *logger = new Log; // I need only one logger for all application
int main()
{
logger->write( "Main" );
...
}
extern Log *logger; // Logger from "app.exe"
void Foo()
{
logger->write( "Foo" );
}
extern Log *logger; // Logger from "app.exe"
void Bar()
{
logger->write( "Bar" );
}