1.问题描述
使用qt自带的model/view实现,在dll中对model进行赋值,在exe中使用model在view中显示,基于boost自带的singleton实现时出现了赋值后显示为空数据的错误
2.问题分析
通过查看boost的singleton源码分析,dll和exe中对应的static类对象应该不是同一个,故无法实现异步下的写和读操作
3.测试代码
dll中的mydll.h
#ifndef MYDLL_H
#define MYDLL_H
#include "mydll_global.h"
#include <boost/thread/detail/singleton.hpp>
class MYDLL_EXPORT A
{
public:
A():m_na(0){}
publ

本文分析了使用boost的singleton在DLL中赋值,EXE中显示时遇到的问题,发现由于静态对象在不同地址空间不共享导致数据无法正确显示。建议在跨DLL或DLL与EXE间避免使用单例,改用类内静态变量实现数据共享。
最低0.47元/天 解锁文章
11万+

被折叠的 条评论
为什么被折叠?



