[Boost.Log] try_lock_shared is not member of light_rw_mutex
Bonjour
Je bosse sur un framework pour lequel je cherche a refactorer les logs pour remplacer la lib existante (maison), par quelque chose qui me permette de faire du multithreading (et éviter d'avoir des entremêlements de logs).
Le framework utilisant déjà boost par ailleurs, j'ai donc travaillé autour de Boost.Log.
J'ai donc une classe dans une DLL déclarée comme suit:
Code:
1 2 3 4 5 6
|
class __declspec(dllexport) BoostLogger: public virtual boost::log::sources::severity_logger_mt < LoggerType >
{
public:
// features
}; |
Cette classe est donc intégrée au sein d'une DLL utilisée par le framework.
Or lors de la compilation j'ai le message d'erreur suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| cots\boost-1.57.0\include\boost-1_57\boost/log/sources/threading_models.hpp(75) : error C2039: 'try_lock_shared' : is not a member of 'boost::log::v2_mt_nt5::aux::light_rw_mutex'
cots\boost-1.57.0\include\boost-1_57\boost/log/detail/light_rw_mutex.hpp(180) : see declaration of 'boost::log::v2_mt_nt5::aux::light_rw_mutex'
cots\boost-1.57.0\include\boost-1_57\boost/log/sources/threading_models.hpp(75) : while compiling class template member function 'bool boost::log::v2_mt_nt5::sources::multi_thread_model<MutexT>::try_lock_shared(void) const'
with
[
MutexT=boost::log::v2_mt_nt5::aux::light_rw_mutex
]
cots\boost-1.57.0\include\boost-1_57\boost/log/sources/basic_logger.hpp(81) : see reference to class template instantiation 'boost::log::v2_mt_nt5::sources::multi_thread_model<MutexT>' being compiled
with
[
MutexT=boost::log::v2_mt_nt5::aux::light_rw_mutex
]
cots\boost-1.57.0\include\boost-1_57\boost/log/sources/severity_feature.hpp(147) : see reference to class template instantiation 'boost::log::v2_mt_nt5::sources::basic_logger<CharT,FinalT,ThreadingModelT>' being compiled
with
[
CharT=char,
FinalT=boost::log::v2_mt_nt5::sources::severity_logger_mt<MyLogLevel>,
ThreadingModelT=boost::log::v2_mt_nt5::sources::multi_thread_model<boost::log::v2_mt_nt5::aux::light_rw_mutex>
]
cots\boost-1.57.0\include\boost-1_57\boost/log/sources/basic_logger.hpp(318) : see reference to class template instantiation 'boost::log::v2_mt_nt5::sources::basic_severity_logger<BaseT,LevelT>' being compiled
with
[
BaseT=boost::log::v2_mt_nt5::sources::basic_logger<char,boost::log::v2_mt_nt5::sources::severity_logger_mt<DA::ILogger::Type>,boost::log::v2_mt_nt5::sources::multi_thread_model<boost::log::v2_mt_nt5::aux::light_rw_mutex>>,
LevelT=MyLogLevel
]
cots\boost-1.57.0\include\boost-1_57\boost/log/sources/severity_logger.hpp(74) : see reference to class template instantiation 'boost::log::v2_mt_nt5::sources::basic_composite_logger<CharT,FinalT,ThreadingModelT,FeaturesT>' being compiled
with
[
CharT=char,
FinalT=boost::log::v2_mt_nt5::sources::severity_logger_mt<MyLogLevel>,
ThreadingModelT=boost::log::v2_mt_nt5::sources::multi_thread_model<boost::log::v2_mt_nt5::aux::light_rw_mutex>,
FeaturesT=boost::log::v2_mt_nt5::sources::features<boost::log::v2_mt_nt5::sources::severity<MyLogLevel>>
]
src\logger\my_boost_logger.h(29) : see reference to class template instantiation 'boost::log::v2_mt_nt5::sources::severity_logger_mt<LevelT>' being compiled
with
[
LevelT=MyLogLevel
] |
Lorsque j'enlève le __declspec(), la librairie compile normalement, par contre, les autres libs ne lienkent par (normal).
Des idées sur le pkoi d'un comportement différent selon que l'on ait le declspec() ou non ?
Y-a-t-il un define à faire ou autre ?
merci