summaryrefslogtreecommitdiff
path: root/TAO
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2002-02-18 18:51:44 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2002-02-18 18:51:44 +0000
commit9dc9028f8531cfd3d4221c556da788d7f7672a34 (patch)
tree0826671c6c12bc82029ed1e9fe7502fc77f0d2fc /TAO
parenta6dac1b11da843224a7f042745b972bea6f0e28c (diff)
downloadATCD-9dc9028f8531cfd3d4221c556da788d7f7672a34.tar.gz
ChangeLogTag: Mon Feb 18 19:34:12 2002 Johnny Willemsen <jwillemsen@remedy.nl>
Diffstat (limited to 'TAO')
-rw-r--r--TAO/ChangeLogs/ChangeLog-02a37
-rw-r--r--TAO/TAO-INSTALL.html6
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/tie_sh.cpp3
-rw-r--r--TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Transport.h4
-rw-r--r--TAO/tao/Domain/DomainS_T.h32
-rw-r--r--TAO/tao/IIOP_Transport.h4
-rw-r--r--TAO/tao/PortableServer/ImplRepoS_T.h56
-rw-r--r--TAO/tao/PortableServer/MessagingS_T.h2
-rw-r--r--TAO/tao/PortableServer/PolicyS_T.h20
-rw-r--r--TAO/tao/Strategies/DIOP_Transport.h4
-rw-r--r--TAO/tao/Strategies/SHMIOP_Transport.h4
11 files changed, 104 insertions, 68 deletions
diff --git a/TAO/ChangeLogs/ChangeLog-02a b/TAO/ChangeLogs/ChangeLog-02a
index a0a09e4aa11..b1748f165f7 100644
--- a/TAO/ChangeLogs/ChangeLog-02a
+++ b/TAO/ChangeLogs/ChangeLog-02a
@@ -1,3 +1,24 @@
+Mon Feb 18 19:38:12 2002 Johnny Willemsen <jwillemsen@remedy.nl>
+
+ * TAO_IDL/be/be_visitor_interface/tie_sh.cpp:
+ * orbsvcs/orbsvcs/PortableGroup/UIPMC_Transport.h:
+ * tao/IIOP_Transport.h:
+ * tao/Domain/DomainS_T.h:
+ * tao/PortableServer/ImplRepoS_T.h:
+ * tao/PortableServer/MessagingS_T.h:
+ * tao/PortableServer/PolicyS_T.h:
+ * tao/Strategies/DIOP_Transport.h:
+ * tao/Strategies/SHMIOP_Transport.h:
+ * TAO-INSTALL.html:
+
+ Made TAO compiling with the Microsoft Visual C++ 7 compiler.
+ Template classes cannot be exported when doing a dynamic build, so
+ removed some export macro's from template definitions. When a class
+ is derived from a class template then the class template must be
+ explicit instantiated and be exported. To make sure that we only do
+ this when a compiler supports this we introduced the new define
+ ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT.
+
Mon Feb 18 11:27:00 2002 Craig Rodrigues <crodrigu@bbn.com>
* orbsvcs/orbsvcs/AV/AV_Core.cpp:
@@ -8,7 +29,7 @@ Mon Feb 18 11:27:00 2002 Craig Rodrigues <crodrigu@bbn.com>
* orbsvcs/orbsvcs/AV/QoS_UDP.cpp:
* orbsvcs/orbsvcs/AV/QoS_UDP.h:
Check for ACE_HAS_WINSOCK2_GQOS in addition to ACE_HAS_RAPI
- for compiling QoS enabled code.
+ for compiling QoS enabled code.
Add TAO_AV_UDP_QoS_Acceptor::qos_acceptor_addr_. Populate
this address with localhost in open_default(), instead of the
any address (0.0.0.0).
@@ -20,7 +41,7 @@ Mon Feb 18 11:27:00 2002 Craig Rodrigues <crodrigu@bbn.com>
* TAOACE.dsw:
Add ACE_QoS.dsp to workspace.
-
+
Mon Feb 18 09:26:02 2002 Jeff Parsons <parsons@cs.wustl.edu>
* orbsvcs/orbsvcs/ETCL/ETCL.dsp:
@@ -144,8 +165,8 @@ Fri Feb 15 07:01:28 2002 Douglas C. Schmidt <schmidt@macarena.cs.wustl.edu>
Thu Feb 14 17:03:48 2002 Carlos O'Ryan <coryan@uci.edu>
- * orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.cpp (shutdown):
- * orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.cpp (shutdown):
+ * orbsvcs/orbsvcs/Event/EC_Reactive_ConsumerControl.cpp (shutdown):
+ * orbsvcs/orbsvcs/Event/EC_Reactive_SupplierControl.cpp (shutdown):
Fixed event channel shutdown problems: the event channel
removes some Event_Handlers from the Reactor, but did not reset
the reactor pointer in those Event_Handlers. If the ORB Reactor is
@@ -155,10 +176,10 @@ Thu Feb 14 17:03:48 2002 Carlos O'Ryan <coryan@uci.edu>
Thu Feb 14 15:20:19 2002 Carlos O'Ryan <coryan@uci.edu>
- * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushConsumer.cpp (supplier_non_existent):
- * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp (consumer_non_existent):
- * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullConsumer.cpp (supplier_non_existent):
- * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullSupplier.cpp (consumer_non_existent):
+ * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushConsumer.cpp (supplier_non_existent):
+ * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPushSupplier.cpp (consumer_non_existent):
+ * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullConsumer.cpp (supplier_non_existent):
+ * orbsvcs/orbsvcs/CosEvent/CEC_ProxyPullSupplier.cpp (consumer_non_existent):
Do not hold the mutex while checking if the peer stil exists.
Doing so can result in dead-locks whenever there is a nested
upcall as part of the request.
diff --git a/TAO/TAO-INSTALL.html b/TAO/TAO-INSTALL.html
index 75dde213847..8ec3602c17f 100644
--- a/TAO/TAO-INSTALL.html
+++ b/TAO/TAO-INSTALL.html
@@ -19,9 +19,9 @@
<table width="100%" border=1>
<tr valign=top>
<td><b>Fully supported, i.e., continually tested and used daily</b></td>
- <td>Solaris 2.5, 2.6, and 7, Windows NT/2000 (MSVC 5.0 and 6.0),
- Linux/Intel, Linux/Alpha, VxWorks, LynxOS, Digital UNIX 4.0
- and 5.0, IRIX 6.x, and QNX Neutrino 2.0
+ <td>Solaris 2.5, 2.6, and 7, Windows NT/2000 (MSVC 5.x, 6.x, and 7.x and
+ Borland C++ Builder 5), Linux/Intel, Linux/Alpha, VxWorks, LynxOS,
+ Digital UNIX 4.0 and 5.0, IRIX 6.x, and QNX Neutrino 2.0
</td>
</tr>
<tr valign=top bgcolor="#AFAFAF">
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/tie_sh.cpp b/TAO/TAO_IDL/be/be_visitor_interface/tie_sh.cpp
index d8ecbb5d5a6..5cf10eaa315 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/tie_sh.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/tie_sh.cpp
@@ -90,8 +90,7 @@ be_visitor_interface_tie_sh::visit_interface (be_interface *node)
*os << "// TIE class: Refer to CORBA v2.2, Section 20.34.4" << be_nl;
*os << "template <class T>" << be_nl;
- *os << "class " << be_global->skel_export_macro ()
- << " " << tiename << " : public " << namebuf << be_nl;
+ *os << "class " << " " << tiename << " : public " << namebuf << be_nl;
*os << "{" << be_nl
<< "public:" << be_idt_nl
<< tiename << " (T &t);" << be_nl
diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Transport.h b/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Transport.h
index 97140c36caa..0f0816b1c62 100644
--- a/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Transport.h
+++ b/TAO/orbsvcs/orbsvcs/PortableGroup/UIPMC_Transport.h
@@ -37,6 +37,10 @@ class TAO_Acceptor;
typedef ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>
TAO_UIPMC_SVC_HANDLER;
+#if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT
+template class TAO_PortableGroup_Export ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>;
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT */
+
/**
* @class TAO_UIPMC_Transport
*
diff --git a/TAO/tao/Domain/DomainS_T.h b/TAO/tao/Domain/DomainS_T.h
index fad7b4a73d7..461cd289fc5 100644
--- a/TAO/tao/Domain/DomainS_T.h
+++ b/TAO/tao/Domain/DomainS_T.h
@@ -35,7 +35,7 @@ TAO_NAMESPACE POA_CORBA
{
// TIE class: Refer to CORBA v2.2, Section 20.34.4
template <class T>
- class TAO_Export DomainManager_tie : public DomainManager
+ class DomainManager_tie : public DomainManager
{
public:
DomainManager_tie (T &t);
@@ -48,7 +48,7 @@ TAO_NAMESPACE POA_CORBA
// ctor with T*, ownership flag and a POA
~DomainManager_tie (void);
// dtor
-
+
// TIE specific functions
T *_tied_object (void);
// return the underlying object
@@ -60,7 +60,7 @@ TAO_NAMESPACE POA_CORBA
// do we own it
void _is_owner (CORBA::Boolean b);
// set the ownership
-
+
// overridden ServantBase operations
PortableServer::POA_ptr _default_POA (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
@@ -72,12 +72,12 @@ TAO_NAMESPACE POA_CORBA
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
private:
T *ptr_;
PortableServer::POA_var poa_;
CORBA::Boolean rel_;
-
+
// copy and assignment are not allowed
DomainManager_tie (const DomainManager_tie &);
void operator= (const DomainManager_tie &);
@@ -85,7 +85,7 @@ TAO_NAMESPACE POA_CORBA
// TIE class: Refer to CORBA v2.2, Section 20.34.4
template <class T>
- class TAO_Export ConstructionPolicy_tie : public ConstructionPolicy
+ class ConstructionPolicy_tie : public ConstructionPolicy
{
public:
ConstructionPolicy_tie (T &t);
@@ -98,7 +98,7 @@ TAO_NAMESPACE POA_CORBA
// ctor with T*, ownership flag and a POA
~ConstructionPolicy_tie (void);
// dtor
-
+
// TIE specific functions
T *_tied_object (void);
// return the underlying object
@@ -110,7 +110,7 @@ TAO_NAMESPACE POA_CORBA
// do we own it
void _is_owner (CORBA::Boolean b);
// set the ownership
-
+
// overridden ServantBase operations
PortableServer::POA_ptr _default_POA (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
@@ -123,36 +123,36 @@ TAO_NAMESPACE POA_CORBA
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
CORBA::PolicyType policy_type (
-
+
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
::CORBA::Policy_ptr copy (
-
+
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
void destroy (
-
+
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
private:
T *ptr_;
PortableServer::POA_var poa_;
CORBA::Boolean rel_;
-
+
// copy and assignment are not allowed
ConstructionPolicy_tie (const ConstructionPolicy_tie &);
void operator= (const ConstructionPolicy_tie &);
diff --git a/TAO/tao/IIOP_Transport.h b/TAO/tao/IIOP_Transport.h
index 6492dba9e8c..01ef1914569 100644
--- a/TAO/tao/IIOP_Transport.h
+++ b/TAO/tao/IIOP_Transport.h
@@ -39,6 +39,10 @@ class TAO_Acceptor;
typedef ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>
TAO_IIOP_SVC_HANDLER;
+#if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT
+template class TAO_Export ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>;
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT */
+
/**
* @class TAO_IIOP_Transport
*
diff --git a/TAO/tao/PortableServer/ImplRepoS_T.h b/TAO/tao/PortableServer/ImplRepoS_T.h
index 409ed7283e8..be8154014e6 100644
--- a/TAO/tao/PortableServer/ImplRepoS_T.h
+++ b/TAO/tao/PortableServer/ImplRepoS_T.h
@@ -35,7 +35,7 @@ TAO_NAMESPACE POA_ImplementationRepository
{
// TIE class: Refer to CORBA v2.2, Section 20.34.4
template <class T>
- class TAO_PortableServer_Export ServerObject_tie : public ServerObject
+ class ServerObject_tie : public ServerObject
{
public:
ServerObject_tie (T &t);
@@ -48,7 +48,7 @@ TAO_NAMESPACE POA_ImplementationRepository
// ctor with T*, ownership flag and a POA
~ServerObject_tie (void);
// dtor
-
+
// TIE specific functions
T *_tied_object (void);
// return the underlying object
@@ -60,32 +60,32 @@ TAO_NAMESPACE POA_ImplementationRepository
// do we own it
void _is_owner (CORBA::Boolean b);
// set the ownership
-
+
// overridden ServantBase operations
PortableServer::POA_ptr _default_POA (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
);
void ping (
-
+
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
void shutdown (
-
+
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
private:
T *ptr_;
PortableServer::POA_var poa_;
CORBA::Boolean rel_;
-
+
// copy and assignment are not allowed
ServerObject_tie (const ServerObject_tie &);
void operator= (const ServerObject_tie &);
@@ -93,7 +93,7 @@ TAO_NAMESPACE POA_ImplementationRepository
// TIE class: Refer to CORBA v2.2, Section 20.34.4
template <class T>
- class TAO_PortableServer_Export Administration_tie : public Administration
+ class Administration_tie : public Administration
{
public:
Administration_tie (T &t);
@@ -106,7 +106,7 @@ TAO_NAMESPACE POA_ImplementationRepository
// ctor with T*, ownership flag and a POA
~Administration_tie (void);
// dtor
-
+
// TIE specific functions
T *_tied_object (void);
// return the underlying object
@@ -118,7 +118,7 @@ TAO_NAMESPACE POA_ImplementationRepository
// do we own it
void _is_owner (CORBA::Boolean b);
// set the ownership
-
+
// overridden ServantBase operations
PortableServer::POA_ptr _default_POA (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
@@ -132,7 +132,7 @@ TAO_NAMESPACE POA_ImplementationRepository
, ImplementationRepository::Administration::NotFound
, ImplementationRepository::Administration::CannotActivate
));
-
+
void register_server (
const char * server,
const ImplementationRepository::StartupOptions & options
@@ -142,7 +142,7 @@ TAO_NAMESPACE POA_ImplementationRepository
CORBA::SystemException
, ImplementationRepository::Administration::AlreadyRegistered
));
-
+
void reregister_server (
const char * server,
const ImplementationRepository::StartupOptions & options
@@ -151,7 +151,7 @@ TAO_NAMESPACE POA_ImplementationRepository
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
void remove_server (
const char * server
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -160,7 +160,7 @@ TAO_NAMESPACE POA_ImplementationRepository
CORBA::SystemException
, ImplementationRepository::Administration::NotFound
));
-
+
void shutdown_server (
const char * server
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -169,7 +169,7 @@ TAO_NAMESPACE POA_ImplementationRepository
CORBA::SystemException
, ImplementationRepository::Administration::NotFound
));
-
+
char * server_is_running (
const char * server,
const char * addr,
@@ -180,7 +180,7 @@ TAO_NAMESPACE POA_ImplementationRepository
CORBA::SystemException
, ImplementationRepository::Administration::NotFound
));
-
+
void server_is_shutting_down (
const char * server
ACE_ENV_ARG_DECL_WITH_DEFAULTS
@@ -189,7 +189,7 @@ TAO_NAMESPACE POA_ImplementationRepository
CORBA::SystemException
, ImplementationRepository::Administration::NotFound
));
-
+
void find (
const char * server,
ImplementationRepository::ServerInformation_out info
@@ -199,7 +199,7 @@ TAO_NAMESPACE POA_ImplementationRepository
CORBA::SystemException
, ImplementationRepository::Administration::NotFound
));
-
+
void list (
CORBA::ULong how_many,
ImplementationRepository::ServerInformationList_out server_list,
@@ -209,12 +209,12 @@ TAO_NAMESPACE POA_ImplementationRepository
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
private:
T *ptr_;
PortableServer::POA_var poa_;
CORBA::Boolean rel_;
-
+
// copy and assignment are not allowed
Administration_tie (const Administration_tie &);
void operator= (const Administration_tie &);
@@ -222,7 +222,7 @@ TAO_NAMESPACE POA_ImplementationRepository
// TIE class: Refer to CORBA v2.2, Section 20.34.4
template <class T>
- class TAO_PortableServer_Export ServerInformationIterator_tie : public ServerInformationIterator
+ class ServerInformationIterator_tie : public ServerInformationIterator
{
public:
ServerInformationIterator_tie (T &t);
@@ -235,7 +235,7 @@ TAO_NAMESPACE POA_ImplementationRepository
// ctor with T*, ownership flag and a POA
~ServerInformationIterator_tie (void);
// dtor
-
+
// TIE specific functions
T *_tied_object (void);
// return the underlying object
@@ -247,7 +247,7 @@ TAO_NAMESPACE POA_ImplementationRepository
// do we own it
void _is_owner (CORBA::Boolean b);
// set the ownership
-
+
// overridden ServantBase operations
PortableServer::POA_ptr _default_POA (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
@@ -260,20 +260,20 @@ TAO_NAMESPACE POA_ImplementationRepository
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
void destroy (
-
+
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
private:
T *ptr_;
PortableServer::POA_var poa_;
CORBA::Boolean rel_;
-
+
// copy and assignment are not allowed
ServerInformationIterator_tie (const ServerInformationIterator_tie &);
void operator= (const ServerInformationIterator_tie &);
diff --git a/TAO/tao/PortableServer/MessagingS_T.h b/TAO/tao/PortableServer/MessagingS_T.h
index 95eafa8c5d8..ce34f8f9c8c 100644
--- a/TAO/tao/PortableServer/MessagingS_T.h
+++ b/TAO/tao/PortableServer/MessagingS_T.h
@@ -36,7 +36,7 @@ TAO_NAMESPACE POA_Messaging
{
// TIE class: Refer to CORBA v2.2, Section 20.34.4
template <class T>
- class TAO_PortableServer_Export ReplyHandler_tie : public ReplyHandler
+ class ReplyHandler_tie : public ReplyHandler
{
public:
ReplyHandler_tie (T &t);
diff --git a/TAO/tao/PortableServer/PolicyS_T.h b/TAO/tao/PortableServer/PolicyS_T.h
index 77267c3bca7..0733d3dec1b 100644
--- a/TAO/tao/PortableServer/PolicyS_T.h
+++ b/TAO/tao/PortableServer/PolicyS_T.h
@@ -35,7 +35,7 @@ TAO_NAMESPACE POA_CORBA
{
// TIE class: Refer to CORBA v2.2, Section 20.34.4
template <class T>
- class TAO_Export Policy_tie : public Policy
+ class Policy_tie : public Policy
{
public:
Policy_tie (T &t);
@@ -48,7 +48,7 @@ TAO_NAMESPACE POA_CORBA
// ctor with T*, ownership flag and a POA
~Policy_tie (void);
// dtor
-
+
// TIE specific functions
T *_tied_object (void);
// return the underlying object
@@ -60,40 +60,40 @@ TAO_NAMESPACE POA_CORBA
// do we own it
void _is_owner (CORBA::Boolean b);
// set the ownership
-
+
// overridden ServantBase operations
PortableServer::POA_ptr _default_POA (
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
);
CORBA::PolicyType policy_type (
-
+
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
::CORBA::Policy_ptr copy (
-
+
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
void destroy (
-
+
ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
-
+
private:
T *ptr_;
PortableServer::POA_var poa_;
CORBA::Boolean rel_;
-
+
// copy and assignment are not allowed
Policy_tie (const Policy_tie &);
void operator= (const Policy_tie &);
diff --git a/TAO/tao/Strategies/DIOP_Transport.h b/TAO/tao/Strategies/DIOP_Transport.h
index e70a0decc11..c6ce6ce2fa8 100644
--- a/TAO/tao/Strategies/DIOP_Transport.h
+++ b/TAO/tao/Strategies/DIOP_Transport.h
@@ -40,6 +40,10 @@ class TAO_Acceptor;
typedef ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>
TAO_DIOP_SVC_HANDLER;
+#if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT
+template class TAO_Strategies_Export ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>;
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT */
+
/**
* @class TAO_DIOP_Transport
*
diff --git a/TAO/tao/Strategies/SHMIOP_Transport.h b/TAO/tao/Strategies/SHMIOP_Transport.h
index 61785ef6215..b66cf442401 100644
--- a/TAO/tao/Strategies/SHMIOP_Transport.h
+++ b/TAO/tao/Strategies/SHMIOP_Transport.h
@@ -37,6 +37,10 @@ class Tao_Operation_Details;
typedef ACE_Svc_Handler<ACE_MEM_STREAM, ACE_NULL_SYNCH>
TAO_SHMIOP_SVC_HANDLER;
+#if defined ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT
+template class TAO_Strategies_Export ACE_Svc_Handler<ACE_MEM_STREAM, ACE_NULL_SYNCH>;
+#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION_EXPORT */
+
/**
* @class TAO_SHMIOP_Transport
*