[Ace-users] [ace-users] ACE_Hash_Map_Manager will not link if static

David Demland ddemland at marchnetworks.com
Fri Jan 4 17:43:07 CST 2008

Thank You for the help. I forgot to declare the ACE_Hash_Map_Manager. It
was a C++ problem not ACE.


-----Original Message-----
From: schmidt at dre.vanderbilt.edu [mailto:schmidt at dre.vanderbilt.edu] 
Sent: Friday, January 04, 2008 3:46 PM
To: David Demland
Cc: ace-users at cse.wustl.edu
Subject: Re: [ace-users] ACE_Hash_Map_Manager will not link if static 

Hi David,

To ensure that we have proper version/platform/compiler information,
please make sure you fill out the appropriate problem report form (PRF),
which is in


or in


in older versions of ACE+TAO.  Make sure to include this information
when asking any questions about ACE+TAO since otherwise we have to
"guess" what version/platform/compiler/options you've using, which is
very error-prone and slows down our responsiveness.  If you don't use
the PRF, therefore, it is less likely that someone from the core
ACE+TAO developer team will be able to answer your question.
Naturally, we encourage and appreciate other members of the ACE+TAO
user community who can respond to questions that they have the answers

> Here is my problem; I need to have a singleton type object that the
whole system sees only one copy of the object. This
> object will manage a key/value pair of queue IDs and queue objects. To
do this I have an object that has all static
> attributes and methods. This will ensure that all references to the
object will work on the same copy. Since these are key/
> value pairs I want to use some sort of map (or hash table) since the
keys have to be unique. The class looks something
> like:
> typedef ACE_Hash_Map_Manager<int, QueueObject *, ACE_Null_Mutex>
> class EventDispatcher
> {
>   private:
>     static EventMap m_queueList;
>   public:
>     static bool CreateStaticQueue(int P_queueID);
>     static bool DestroyQueue(int P_queueID);
> };
> If I declare the EventMap and the methods without the static keyword
the code links. Once I declare the EventMap and the
> methods static I get an unresolved symbol error in the linker:
> error LNK2001: unresolved external symbol "private: static class
ACE_Hash_Map_Manager<int,class QueueObject *,class
> ACE_Null_Mutex> EventDispatcher::m_queueList"
(?m_queueList at EventDispatcher@@0V?
> $ACE_Hash_Map_Manager at HPAVQueueObject@@VACE_Null_Mutex@@@@A)
> What do I have to do to get the ACE_Hash_Map_Manager to link as a

I think this is a C++ question, not an ACE question.  Please see


for how to do this.



More information about the Ace-users mailing list