[mingw32-qpid-cpp/f14/master] Import from master

Andrew Beekhof beekhof at fedoraproject.org
Mon Jan 10 22:52:12 UTC 2011


commit 761b54dcfb8a7687a9f4884150d87ad64108df05
Author: Andrew Beekhof <andrew at beekhof.net>
Date:   Mon Jan 10 23:47:10 2011 +0100

    Import from master

 mingw32-qpid-cpp.spec |   93 +++
 qpid-mingw.patch      | 1701 +++++++++++++++++++++++++++++++++++++++++++++++++
 sources               |    1 +
 3 files changed, 1795 insertions(+), 0 deletions(-)
---
diff --git a/mingw32-qpid-cpp.spec b/mingw32-qpid-cpp.spec
new file mode 100644
index 0000000..c5df3e8
--- /dev/null
+++ b/mingw32-qpid-cpp.spec
@@ -0,0 +1,93 @@
+%global __strip %{_mingw32_strip}
+%global __objdump %{_mingw32_objdump}
+%global _use_internal_dependency_generator 0
+%global __find_requires %{_mingw32_findrequires}
+%global __find_provides %{_mingw32_findprovides}
+%define __debug_install_post %{_mingw32_debug_install_post}
+
+Name:		mingw32-qpid-cpp
+Version:	0.8
+Release:	0.2%{?dist}
+Summary:	MinGW Windows port of AMQP C++ Daemons and Libraries
+
+Group:		Development/Libraries
+License:	ASL 2.0
+URL:		http://qpid.apache.org
+
+Source0:	http://people.apache.org/~robbie/qpid/%{version}/RC3/qpid-%{version}.tar.gz
+
+Patch6:		qpid-mingw.patch
+
+BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+BuildArch:	noarch
+
+BuildRequires:	redhat-rpm-config cmake make ruby ruby-devel python-devel
+BuildRequires:	mingw32-gcc-c++ mingw32-boost mingw32-libxslt mingw32-gnutls
+BuildRequires:	mingw32-filesystem >= 57
+Requires:	mingw32-boost mingw32-libxslt mingw32-gnutls 
+
+%description
+MinGW cross-compiled daemons and run-time libraries for AMQP client
+applications developed using Qpid C++. Clients exchange messages with
+an AMQP message broker using the AMQP protocol.
+
+%{_mingw32_debug_package}
+
+%prep
+%setup -q -n qpid-%{version}
+%patch6 -p0
+
+%build
+%{__mkdir_p} build
+pushd build
+%_mingw32_cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+		-DBUILD_MSCLFS:BOOL=OFF		  \
+		-DBUILD_MSSQL:BOOL=OFF		  \
+		-DBUILD_SSL:BOOL=OFF		  \
+%if "%{?dist}" == ".fc13"
+		-DBoost_COMPILER:STRING=-gcc44 ../cpp
+%else
+		-DBoost_COMPILER:STRING=-gcc45 ../cpp
+%endif
+popd
+
+make -C build VERBOSE=1 %{?_smp_mflags}
+
+%install
+%{__rm} -rf $RPM_BUILD_ROOT
+DESTDIR=$RPM_BUILD_ROOT make -C build VERBOSE=1 install
+
+# Don't package sources in the examples directory
+rm -rf $RPM_BUILD_ROOT%{_mingw32_prefix}/examples
+rm -rf $RPM_BUILD_ROOT%{_mingw32_prefix}/bin/qpid-latency-test.exe
+rm -rf $RPM_BUILD_ROOT%{_mingw32_prefix}/bin/qpid-perftest.exe
+
+# Maybe install some test programs for validation
+#{__install} -d $RPM_BUILD_ROOT $RPM_BUILD_ROOT{_mingw32_bindir}
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root,-)
+%doc %{_mingw32_prefix}/LICENSE
+%doc %{_mingw32_prefix}/NOTICE
+%{_mingw32_prefix}/conf
+%{_mingw32_prefix}/plugins
+%{_mingw32_prefix}/managementgen
+%{_mingw32_includedir}/qpid
+%{_mingw32_bindir}/qpidd.exe
+%{_mingw32_bindir}/*.dll
+%{_mingw32_bindir}/lib*.dll.a
+%doc cpp/RELEASE_NOTES
+
+%changelog
+* Tue Dec 21 2010 Andrew Beekhof <andrew at beekhof.net> - 0.8-0.2
+- Add dependancy on minw32-filesystem
+
+* Fri Dec 3 2010 Andrew Beekhof <andrew at beekhof.net> - 0.8-0.1
+- Update to upstream 0.8-rc3
+
+* Fri Sep 10 2010 Andrew Beekhof <andrew at beekhof.net> - 0.6.895736-1
+- Initial package creation
diff --git a/qpid-mingw.patch b/qpid-mingw.patch
new file mode 100644
index 0000000..3aa2b9c
--- /dev/null
+++ b/qpid-mingw.patch
@@ -0,0 +1,1701 @@
+---
+ cpp/CMakeLists.txt                                   |   14 +++++++++
+ cpp/include/qpid/Address.h                           |    2 -
+ cpp/include/qpid/CommonImportExport.h                |    9 ++++++
+ cpp/include/qpid/Exception.h                         |    6 ++--
+ cpp/include/qpid/Url.h                               |    2 -
+ cpp/include/qpid/agent/ManagementAgent.h             |    6 ++--
+ cpp/include/qpid/agent/QmfAgentImportExport.h        |    9 ++++++
+ cpp/include/qpid/client/ClientImportExport.h         |    9 ++++++
+ cpp/include/qpid/client/ConnectionSettings.h         |    2 -
+ cpp/include/qpid/client/Handle.h                     |   10 +++---
+ cpp/include/qpid/client/Subscription.h               |    6 ++--
+ cpp/include/qpid/console/Broker.h                    |   12 ++++----
+ cpp/include/qpid/console/ConsoleImportExport.h       |    9 ++++++
+ cpp/include/qpid/framing/Array.h                     |   26 ++++++++---------
+ cpp/include/qpid/framing/Buffer.h                    |   12 ++++----
+ cpp/include/qpid/framing/FieldTable.h                |    4 +-
+ cpp/include/qpid/framing/FieldValue.h                |    2 -
+ cpp/include/qpid/framing/List.h                      |   26 ++++++++---------
+ cpp/include/qpid/framing/ProtocolVersion.h           |   10 +++---
+ cpp/include/qpid/framing/Uuid.h                      |    2 -
+ cpp/include/qpid/log/Logger.h                        |    2 -
+ cpp/include/qpid/management/ManagementObject.h       |   18 ++++++------
+ cpp/include/qpid/messaging/Handle.h                  |   10 +++---
+ cpp/include/qpid/messaging/ImportExport.h            |    9 ++++++
+ cpp/include/qpid/sys/IntegerTypes.h                  |    2 -
+ cpp/include/qpid/sys/Runnable.h                      |    2 -
+ cpp/include/qpid/sys/Thread.h                        |    6 +++-
+ cpp/include/qpid/sys/Time.h                          |    2 -
+ cpp/include/qpid/sys/windows/IntegerTypes.h          |    6 +++-
+ cpp/rubygen/0-10/specification.rb                    |    2 -
+ cpp/rubygen/MethodBodyDefaultVisitor.rb              |    2 -
+ cpp/rubygen/cppgen.rb                                |    3 ++
+ cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb |    2 -
+ cpp/rubygen/framing.0-10/OperationsInvoker.rb        |    2 -
+ cpp/rubygen/framing.0-10/Proxy.rb                    |    4 +-
+ cpp/rubygen/framing.0-10/Session.rb                  |    4 +-
+ cpp/rubygen/framing.0-10/structs.rb                  |    2 -
+ cpp/src/CMakeLists.txt                               |    6 ++--
+ cpp/src/qpid/amqp_0_10/SessionHandler.h              |    2 -
+ cpp/src/qpid/broker/BrokerImportExport.h             |    9 ++++++
+ cpp/src/qpid/broker/DeliverableMessage.h             |    2 -
+ cpp/src/qpid/broker/Exchange.h                       |   10 +++---
+ cpp/src/qpid/broker/ExpiryPolicy.h                   |    2 -
+ cpp/src/qpid/broker/MessageBuilder.h                 |    2 -
+ cpp/src/qpid/broker/NullMessageStore.h               |    2 -
+ cpp/src/qpid/broker/TopicExchange.h                  |    2 -
+ cpp/src/qpid/broker/TxPublish.h                      |    2 -
+ cpp/src/qpid/broker/windows/BrokerDefaults.cpp       |    6 ++++
+ cpp/src/qpid/broker/windows/SaslAuthenticator.cpp    |    8 ++++-
+ cpp/src/qpid/broker/windows/SslProtocolFactory.cpp   |   28 ++++++++++++++++---
+ cpp/src/qpid/client/windows/SaslFactory.cpp          |    4 +-
+ cpp/src/qpid/client/windows/SslConnector.cpp         |    4 +-
+ cpp/src/qpid/framing/AMQBody.h                       |    2 -
+ cpp/src/qpid/framing/AMQContentBody.h                |   12 ++++----
+ cpp/src/qpid/framing/AMQFrame.h                      |    2 -
+ cpp/src/qpid/framing/AMQHeaderBody.h                 |    2 -
+ cpp/src/qpid/framing/AMQHeartbeatBody.h              |    2 -
+ cpp/src/qpid/framing/Invoker.h                       |    2 -
+ cpp/src/qpid/framing/TransferContent.h               |    2 -
+ cpp/src/qpid/log/windows/SinkOptions.cpp             |    4 +-
+ cpp/src/qpid/log/windows/SinkOptions.h               |    2 -
+ cpp/src/qpid/sys/AggregateOutput.h                   |    2 -
+ cpp/src/qpid/sys/AsynchIOHandler.h                   |    2 -
+ cpp/src/qpid/sys/Poller.h                            |    2 -
+ cpp/src/qpid/sys/alloca.h                            |    6 +++-
+ cpp/src/qpid/sys/windows/AsynchIO.cpp                |   16 ++++++++--
+ cpp/src/qpid/sys/windows/AsynchIoResult.h            |    2 -
+ cpp/src/qpid/sys/windows/IocpPoller.cpp              |    6 ++--
+ cpp/src/qpid/sys/windows/Shlib.cpp                   |    3 +-
+ cpp/src/qpid/sys/windows/Socket.cpp                  |    5 +++
+ cpp/src/qpid/sys/windows/SocketAddress.cpp           |    4 ++
+ cpp/src/qpid/sys/windows/SslAsynchIO.cpp             |   22 +++++++++++++-
+ cpp/src/qpid/sys/windows/SslAsynchIO.h               |    2 -
+ cpp/src/qpid/sys/windows/StrError.cpp                |    4 ++
+ cpp/src/qpid/sys/windows/Time.cpp                    |    4 ++
+ cpp/src/qpid/sys/windows/uuid.cpp                    |    6 +++-
+ cpp/src/ssl.cmake                                    |    4 +-
+ cpp/src/tests/TimerTest.cpp                          |    4 ++
+ cpp/src/tests/windows/DisableWin32ErrorWindows.cpp   |    4 ++
+ cpp/src/windows/QpiddBroker.cpp                      |    4 +-
+ 80 files changed, 323 insertions(+), 154 deletions(-)
+
+Index: cpp/include/qpid/Address.h
+===================================================================
+--- cpp/include/qpid/Address.h.orig	2010-05-19 23:28:38.000000000 +0200
++++ cpp/include/qpid/Address.h	2010-12-03 16:36:41.082010996 +0100
+@@ -36,7 +36,7 @@ public:
+     static const std::string TCP; // Default TCP protocol tag.
+     static const uint16_t AMQP_PORT=5672; // Default AMQP port.
+     
+-    QPID_COMMON_EXTERN explicit Address(
++    QPID_COMMON_INLINE_EXTERN explicit Address(
+         const std::string& protocol_=std::string(),
+         const std::string& host_=std::string(),
+         uint16_t port_=0
+Index: cpp/include/qpid/CommonImportExport.h
+===================================================================
+--- cpp/include/qpid/CommonImportExport.h.orig	2009-07-15 18:45:21.000000000 +0200
++++ cpp/include/qpid/CommonImportExport.h	2010-12-03 16:36:41.082010996 +0100
+@@ -26,8 +26,17 @@
+ #else
+ #define QPID_COMMON_EXTERN __declspec(dllimport)
+ #endif
++#ifdef _MSC_VER
++#  define QPID_COMMON_CLASS_EXTERN
++#  define QPID_COMMON_INLINE_EXTERN QPID_COMMON_EXTERN
++#else
++#  define QPID_COMMON_CLASS_EXTERN QPID_COMMON_EXTERN
++#  define QPID_COMMON_INLINE_EXTERN
++#endif
+ #else
+ #define QPID_COMMON_EXTERN
++#define QPID_COMMON_CLASS_EXTERN
++#define QPID_COMMON_INLINE_EXTERN
+ #endif
+ 
+ #endif
+Index: cpp/include/qpid/Exception.h
+===================================================================
+--- cpp/include/qpid/Exception.h.orig	2010-02-25 21:53:08.000000000 +0100
++++ cpp/include/qpid/Exception.h	2010-12-03 16:36:41.081010859 +0100
+@@ -36,7 +36,7 @@ namespace qpid
+ /**
+  * Base class for Qpid runtime exceptions.
+  */
+-class Exception : public std::exception
++class QPID_COMMON_CLASS_EXTERN Exception : public std::exception
+ {
+   public:
+     QPID_COMMON_EXTERN explicit Exception(const std::string& message=std::string()) throw();
+@@ -68,13 +68,13 @@ struct ChannelException : public Excepti
+         : Exception(message), code(_code) {}
+ };
+ 
+-struct ConnectionException : public Exception {
++struct QPID_COMMON_CLASS_EXTERN ConnectionException : public Exception {
+     const framing::connection::CloseCode code;
+     ConnectionException(framing::connection::CloseCode _code, const std::string& message)
+         : Exception(message), code(_code) {}
+ };
+ 
+-struct ClosedException : public Exception {
++struct QPID_COMMON_CLASS_EXTERN ClosedException : public Exception {
+     QPID_COMMON_EXTERN ClosedException(const std::string& msg=std::string());
+     QPID_COMMON_EXTERN std::string getPrefix() const;
+ };
+Index: cpp/include/qpid/Url.h
+===================================================================
+--- cpp/include/qpid/Url.h.orig	2010-06-04 17:23:32.000000000 +0200
++++ cpp/include/qpid/Url.h	2010-12-03 16:36:41.081010859 +0100
+@@ -66,7 +66,7 @@ struct Url : public std::vector<Address>
+      *@exception Invalid if the url is invalid.
+      */
+     QPID_COMMON_EXTERN void parse(const char* url);
+-    QPID_COMMON_EXTERN void parse(const std::string& url) { parse(url.c_str()); }
++    QPID_COMMON_INLINE_EXTERN void parse(const std::string& url) { parse(url.c_str()); }
+ 
+     /** Replace contesnts with parsed URL. Replace with empty URL if invalid. */
+     QPID_COMMON_EXTERN void parseNoThrow(const char* url);
+Index: cpp/include/qpid/agent/ManagementAgent.h
+===================================================================
+--- cpp/include/qpid/agent/ManagementAgent.h.orig	2010-07-08 22:29:52.000000000 +0200
++++ cpp/include/qpid/agent/ManagementAgent.h	2010-12-03 16:36:41.081010859 +0100
+@@ -41,9 +41,9 @@ class ManagementAgent
+ 
+     class Singleton {
+     public:
+-        QMF_AGENT_EXTERN Singleton(bool disableManagement = false);
+-        QMF_AGENT_EXTERN ~Singleton();
+-        QMF_AGENT_EXTERN static ManagementAgent* getInstance();
++        QMF_AGENT_INLINE_EXTERN Singleton(bool disableManagement = false);
++        QMF_AGENT_INLINE_EXTERN ~Singleton();
++        QMF_AGENT_INLINE_EXTERN static ManagementAgent* getInstance();
+     };
+ 
+     typedef enum {
+Index: cpp/include/qpid/agent/QmfAgentImportExport.h
+===================================================================
+--- cpp/include/qpid/agent/QmfAgentImportExport.h.orig	2010-03-12 21:20:55.000000000 +0100
++++ cpp/include/qpid/agent/QmfAgentImportExport.h	2010-12-03 16:36:41.082010996 +0100
+@@ -26,8 +26,17 @@
+ #else
+ #define QMF_AGENT_EXTERN __declspec(dllimport)
+ #endif
++#ifdef _MSC_VER
++#  define QMF_AGENT_CLASS_EXTERN
++#  define QMF_AGENT_INLINE_EXTERN QMF_AGENT_EXTERN
++#else
++#  define QMF_AGENT_CLASS_EXTERN QMF_AGENT_EXTERN
++#  define QMF_AGENT_INLINE_EXTERN
++#endif
+ #else
+ #define QMF_AGENT_EXTERN
++#define QMF_AGENT_CLASS_EXTERN
++#define QMF_AGENT_INLINE_EXTERN
+ #endif
+ 
+ #endif
+Index: cpp/include/qpid/client/ClientImportExport.h
+===================================================================
+--- cpp/include/qpid/client/ClientImportExport.h.orig	2009-07-15 18:45:21.000000000 +0200
++++ cpp/include/qpid/client/ClientImportExport.h	2010-12-03 16:36:41.084010990 +0100
+@@ -26,8 +26,17 @@
+ #else
+ #define QPID_CLIENT_EXTERN __declspec(dllimport)
+ #endif
++#ifdef _MSC_VER
++#  define QPID_CLIENT_CLASS_EXTERN
++#  define QPID_CLIENT_INLINE_EXTERN QPID_CLIENT_EXTERN
++#else
++#  define QPID_CLIENT_CLASS_EXTERN QPID_CLIENT_EXTERN
++#  define QPID_CLIENT_INLINE_EXTERN
++#endif
+ #else
+ #define QPID_CLIENT_EXTERN
++#define QPID_CLIENT_CLASS_EXTERN
++#define QPID_CLIENT_INLINE_EXTERN
+ #endif
+ 
+ #endif
+Index: cpp/include/qpid/client/ConnectionSettings.h
+===================================================================
+--- cpp/include/qpid/client/ConnectionSettings.h.orig	2010-04-14 16:40:08.000000000 +0200
++++ cpp/include/qpid/client/ConnectionSettings.h	2010-12-03 16:36:41.084010990 +0100
+@@ -37,7 +37,7 @@ namespace client {
+ /**
+  * Settings for a Connection.
+  */
+-struct ConnectionSettings {
++struct QPID_CLIENT_CLASS_EXTERN ConnectionSettings {
+ 
+     QPID_CLIENT_EXTERN ConnectionSettings();
+     QPID_CLIENT_EXTERN virtual ~ConnectionSettings();
+Index: cpp/include/qpid/client/Handle.h
+===================================================================
+--- cpp/include/qpid/client/Handle.h.orig	2009-07-15 18:45:21.000000000 +0200
++++ cpp/include/qpid/client/Handle.h	2010-12-03 16:36:41.083010644 +0100
+@@ -40,22 +40,22 @@ template <class T> class Handle {
+   public:
+ 
+     /**@return true if handle is valid,  i.e. not null. */
+-    QPID_CLIENT_EXTERN bool isValid() const { return impl; }
++    QPID_CLIENT_INLINE_EXTERN bool isValid() const { return impl; }
+ 
+     /**@return true if handle is null. It is an error to call any function on a null handle. */
+-    QPID_CLIENT_EXTERN bool isNull() const { return !impl; }
++    QPID_CLIENT_INLINE_EXTERN bool isNull() const { return !impl; }
+ 
+     /** Conversion to bool supports idiom if (handle) { handle->... } */
+-    QPID_CLIENT_EXTERN operator bool() const { return impl; }
++    QPID_CLIENT_INLINE_EXTERN operator bool() const { return impl; }
+ 
+     /** Operator ! supports idiom if (!handle) { do_if_handle_is_null(); } */
+-    QPID_CLIENT_EXTERN bool operator !() const { return !impl; }
++    QPID_CLIENT_INLINE_EXTERN bool operator !() const { return !impl; }
+ 
+     void swap(Handle<T>& h) { T* t = h.impl; h.impl = impl; impl = t; }
+ 
+   protected:
+     typedef T Impl;
+-    QPID_CLIENT_EXTERN Handle() :impl() {}
++    QPID_CLIENT_INLINE_EXTERN Handle() :impl() {}
+ 
+     // Not implemented,subclasses must implement.
+     QPID_CLIENT_EXTERN Handle(const Handle&);
+Index: cpp/include/qpid/client/Subscription.h
+===================================================================
+--- cpp/include/qpid/client/Subscription.h.orig	2009-07-15 18:45:21.000000000 +0200
++++ cpp/include/qpid/client/Subscription.h	2010-12-03 16:36:41.084010990 +0100
+@@ -91,13 +91,13 @@ class Subscription : public Handle<Subsc
+     QPID_CLIENT_EXTERN void release(const SequenceSet& messageIds);
+ 
+     /* Acquire a single message */
+-    QPID_CLIENT_EXTERN void acquire(const Message& m) { acquire(SequenceSet(m.getId())); }
++    QPID_CLIENT_INLINE_EXTERN void acquire(const Message& m) { acquire(SequenceSet(m.getId())); }
+ 
+     /* Accept a single message */
+-    QPID_CLIENT_EXTERN void accept(const Message& m) { accept(SequenceSet(m.getId())); }
++    QPID_CLIENT_INLINE_EXTERN void accept(const Message& m) { accept(SequenceSet(m.getId())); }
+ 
+     /* Release a single message */
+-    QPID_CLIENT_EXTERN void release(const Message& m) { release(SequenceSet(m.getId())); }
++    QPID_CLIENT_INLINE_EXTERN void release(const Message& m) { release(SequenceSet(m.getId())); }
+ 
+     /** Get the session associated with this subscription */
+     QPID_CLIENT_EXTERN Session getSession() const;
+Index: cpp/include/qpid/console/Broker.h
+===================================================================
+--- cpp/include/qpid/console/Broker.h.orig	2010-06-03 22:23:30.000000000 +0200
++++ cpp/include/qpid/console/Broker.h	2010-12-03 16:36:41.082010996 +0100
+@@ -55,12 +55,12 @@ namespace console {
+                                    client::ConnectionSettings& settings);
+         QPID_CONSOLE_EXTERN ~Broker();
+ 
+-        QPID_CONSOLE_EXTERN bool isConnected() const { return connected; }
+-        QPID_CONSOLE_EXTERN const std::string& getError() const { return error; }
+-        QPID_CONSOLE_EXTERN const std::string& getSessionId() const { return amqpSessionId; }
+-        QPID_CONSOLE_EXTERN const framing::Uuid& getBrokerId() const { return brokerId; }
+-        QPID_CONSOLE_EXTERN uint32_t getBrokerBank() const { return 1; }
+-        QPID_CONSOLE_EXTERN void addBinding(const std::string& key) {
++        QPID_CONSOLE_INLINE_EXTERN bool isConnected() const { return connected; }
++        QPID_CONSOLE_INLINE_EXTERN const std::string& getError() const { return error; }
++        QPID_CONSOLE_INLINE_EXTERN const std::string& getSessionId() const { return amqpSessionId; }
++        QPID_CONSOLE_INLINE_EXTERN const framing::Uuid& getBrokerId() const { return brokerId; }
++        QPID_CONSOLE_INLINE_EXTERN uint32_t getBrokerBank() const { return 1; }
++        QPID_CONSOLE_INLINE_EXTERN void addBinding(const std::string& key) {
+             connThreadBody.bindExchange("qpid.management", key);
+         }
+         QPID_CONSOLE_EXTERN std::string getUrl() const;
+Index: cpp/include/qpid/console/ConsoleImportExport.h
+===================================================================
+--- cpp/include/qpid/console/ConsoleImportExport.h.orig	2009-07-15 18:45:21.000000000 +0200
++++ cpp/include/qpid/console/ConsoleImportExport.h	2010-12-03 16:36:41.082010996 +0100
+@@ -26,8 +26,17 @@
+ #else
+ #define QPID_CONSOLE_EXTERN __declspec(dllimport)
+ #endif
++#ifdef _MSC_VER
++#  define QPID_CONSOLE_CLASS_EXTERN
++#  define QPID_CONSOLE_INLINE_EXTERN QPID_CONSOLE_EXTERN
++#else
++#  define QPID_CONSOLE_CLASS_EXTERN QPID_CONSOLE_EXTERN
++#  define QPID_CONSOLE_INLINE_EXTERN
++#endif
+ #else
+ #define QPID_CONSOLE_EXTERN
++#define QPID_CONSOLE_CLASS_EXTERN
++#define QPID_CONSOLE_INLINE_EXTERN
+ #endif
+ 
+ #endif
+Index: cpp/include/qpid/framing/Array.h
+===================================================================
+--- cpp/include/qpid/framing/Array.h.orig	2009-07-15 18:45:21.000000000 +0200
++++ cpp/include/qpid/framing/Array.h	2010-12-03 16:36:41.080010653 +0100
+@@ -55,25 +55,25 @@ class Array
+     //creates a longstr array
+     QPID_COMMON_EXTERN Array(const std::vector<std::string>& in);
+ 
+-    QPID_COMMON_EXTERN TypeCode getType() const { return type; }
++    QPID_COMMON_INLINE_EXTERN TypeCode getType() const { return type; }
+ 
+     // std collection interface.
+-    QPID_COMMON_EXTERN const_iterator begin() const { return values.begin(); }
+-    QPID_COMMON_EXTERN const_iterator end() const { return values.end(); }
+-    QPID_COMMON_EXTERN iterator begin() { return values.begin(); }
+-    QPID_COMMON_EXTERN iterator end(){ return values.end(); }
+-
+-    QPID_COMMON_EXTERN ValuePtr front() const { return values.front(); }
+-    QPID_COMMON_EXTERN ValuePtr back() const { return values.back(); }
+-    QPID_COMMON_EXTERN size_t size() const { return values.size(); }
++    QPID_COMMON_INLINE_EXTERN const_iterator begin() const { return values.begin(); }
++    QPID_COMMON_INLINE_EXTERN const_iterator end() const { return values.end(); }
++    QPID_COMMON_INLINE_EXTERN iterator begin() { return values.begin(); }
++    QPID_COMMON_INLINE_EXTERN iterator end(){ return values.end(); }
++
++    QPID_COMMON_INLINE_EXTERN ValuePtr front() const { return values.front(); }
++    QPID_COMMON_INLINE_EXTERN ValuePtr back() const { return values.back(); }
++    QPID_COMMON_INLINE_EXTERN size_t size() const { return values.size(); }
+ 
+     QPID_COMMON_EXTERN void insert(iterator i, ValuePtr value);
+-    QPID_COMMON_EXTERN void erase(iterator i) { values.erase(i); }
+-    QPID_COMMON_EXTERN void push_back(ValuePtr value) { values.insert(end(), value); }
+-    QPID_COMMON_EXTERN void pop_back() { values.pop_back(); }
++    QPID_COMMON_INLINE_EXTERN void erase(iterator i) { values.erase(i); }
++    QPID_COMMON_INLINE_EXTERN void push_back(ValuePtr value) { values.insert(end(), value); }
++    QPID_COMMON_INLINE_EXTERN void pop_back() { values.pop_back(); }
+ 
+     // Non-std interface
+-    QPID_COMMON_EXTERN void add(ValuePtr value) { push_back(value); }
++    QPID_COMMON_INLINE_EXTERN void add(ValuePtr value) { push_back(value); }
+ 
+     template <class T>
+     void collect(std::vector<T>& out) const
+Index: cpp/include/qpid/framing/Buffer.h
+===================================================================
+--- cpp/include/qpid/framing/Buffer.h.orig	2010-04-09 05:53:30.000000000 +0200
++++ cpp/include/qpid/framing/Buffer.h	2010-12-03 16:36:41.080010653 +0100
+@@ -72,12 +72,12 @@ class Buffer
+     QPID_COMMON_EXTERN void restore(bool reRecord = false);
+     QPID_COMMON_EXTERN void reset();
+ 
+-    QPID_COMMON_EXTERN uint32_t available() { return size - position; }
+-    QPID_COMMON_EXTERN uint32_t getSize() { return size; }
+-    QPID_COMMON_EXTERN uint32_t getPosition() { return position; }
+-    QPID_COMMON_EXTERN void setPosition(uint32_t p) { position = p; }
+-    QPID_COMMON_EXTERN Iterator getIterator() { return Iterator(*this); }
+-    QPID_COMMON_EXTERN char* getPointer() { return data; }
++    QPID_COMMON_INLINE_EXTERN uint32_t available() { return size - position; }
++    QPID_COMMON_INLINE_EXTERN uint32_t getSize() { return size; }
++    QPID_COMMON_INLINE_EXTERN uint32_t getPosition() { return position; }
++    QPID_COMMON_INLINE_EXTERN void setPosition(uint32_t p) { position = p; }
++    QPID_COMMON_INLINE_EXTERN Iterator getIterator() { return Iterator(*this); }
++    QPID_COMMON_INLINE_EXTERN char* getPointer() { return data; }
+ 
+     QPID_COMMON_EXTERN void putOctet(uint8_t i);
+     QPID_COMMON_EXTERN void putShort(uint16_t i);
+Index: cpp/include/qpid/framing/FieldTable.h
+===================================================================
+--- cpp/include/qpid/framing/FieldTable.h.orig	2010-03-31 23:13:12.000000000 +0200
++++ cpp/include/qpid/framing/FieldTable.h	2010-12-03 16:36:41.080010653 +0100
+@@ -56,7 +56,7 @@ class FieldTable
+     typedef ValueMap::reference reference;
+     typedef ValueMap::value_type value_type;
+ 
+-    QPID_COMMON_EXTERN FieldTable() {};
++    QPID_COMMON_INLINE_EXTERN FieldTable() {};
+     QPID_COMMON_EXTERN FieldTable(const FieldTable& ft);
+     QPID_COMMON_EXTERN ~FieldTable();
+     QPID_COMMON_EXTERN FieldTable& operator=(const FieldTable& ft);
+@@ -67,7 +67,7 @@ class FieldTable
+     QPID_COMMON_EXTERN int count() const;
+     QPID_COMMON_EXTERN void set(const std::string& name, const ValuePtr& value);
+     QPID_COMMON_EXTERN ValuePtr get(const std::string& name) const;
+-    QPID_COMMON_EXTERN bool isSet(const std::string& name) const { return get(name).get() != 0; }
++    QPID_COMMON_INLINE_EXTERN bool isSet(const std::string& name) const { return get(name).get() != 0; }
+ 
+     QPID_COMMON_EXTERN void setString(const std::string& name, const std::string& value);
+     QPID_COMMON_EXTERN void setInt(const std::string& name, const int value);
+Index: cpp/include/qpid/framing/FieldValue.h
+===================================================================
+--- cpp/include/qpid/framing/FieldValue.h.orig	2010-06-04 19:41:38.000000000 +0200
++++ cpp/include/qpid/framing/FieldValue.h	2010-12-03 16:36:41.081010859 +0100
+@@ -90,7 +90,7 @@ class FieldValue {
+     void encode(Buffer& buffer);
+     void decode(Buffer& buffer);
+     QPID_COMMON_EXTERN bool operator==(const FieldValue&) const;
+-    QPID_COMMON_EXTERN bool operator!=(const FieldValue& v) const { return !(*this == v); }
++    QPID_COMMON_INLINE_EXTERN bool operator!=(const FieldValue& v) const { return !(*this == v); }
+ 
+     QPID_COMMON_EXTERN void print(std::ostream& out) const;
+ 
+Index: cpp/include/qpid/framing/List.h
+===================================================================
+--- cpp/include/qpid/framing/List.h.orig	2009-09-01 00:43:29.000000000 +0200
++++ cpp/include/qpid/framing/List.h	2010-12-03 16:36:41.080010653 +0100
+@@ -53,19 +53,19 @@ class List
+     QPID_COMMON_EXTERN bool operator==(const List& other) const;
+ 
+     // std collection interface.
+-    QPID_COMMON_EXTERN const_iterator begin() const { return values.begin(); }
+-    QPID_COMMON_EXTERN const_iterator end() const { return values.end(); }
+-    QPID_COMMON_EXTERN iterator begin() { return values.begin(); }
+-    QPID_COMMON_EXTERN iterator end(){ return values.end(); }
+-
+-    QPID_COMMON_EXTERN ValuePtr front() const { return values.front(); }
+-    QPID_COMMON_EXTERN ValuePtr back() const { return values.back(); }
+-    QPID_COMMON_EXTERN size_t size() const { return values.size(); }
+-
+-    QPID_COMMON_EXTERN iterator insert(iterator i, ValuePtr value) { return values.insert(i, value); }
+-    QPID_COMMON_EXTERN void erase(iterator i) { values.erase(i); }
+-    QPID_COMMON_EXTERN void push_back(ValuePtr value) { values.insert(end(), value); }
+-    QPID_COMMON_EXTERN void pop_back() { values.pop_back(); }
++    QPID_COMMON_INLINE_EXTERN const_iterator begin() const { return values.begin(); }
++    QPID_COMMON_INLINE_EXTERN const_iterator end() const { return values.end(); }
++    QPID_COMMON_INLINE_EXTERN iterator begin() { return values.begin(); }
++    QPID_COMMON_INLINE_EXTERN iterator end(){ return values.end(); }
++
++    QPID_COMMON_INLINE_EXTERN ValuePtr front() const { return values.front(); }
++    QPID_COMMON_INLINE_EXTERN ValuePtr back() const { return values.back(); }
++    QPID_COMMON_INLINE_EXTERN size_t size() const { return values.size(); }
++
++    QPID_COMMON_INLINE_EXTERN iterator insert(iterator i, ValuePtr value) { return values.insert(i, value); }
++    QPID_COMMON_INLINE_EXTERN void erase(iterator i) { values.erase(i); }
++    QPID_COMMON_INLINE_EXTERN void push_back(ValuePtr value) { values.insert(end(), value); }
++    QPID_COMMON_INLINE_EXTERN void pop_back() { values.pop_back(); }
+ 
+   private:
+     Values values;
+Index: cpp/include/qpid/framing/ProtocolVersion.h
+===================================================================
+--- cpp/include/qpid/framing/ProtocolVersion.h.orig	2009-07-15 18:45:21.000000000 +0200
++++ cpp/include/qpid/framing/ProtocolVersion.h	2010-12-03 16:36:41.081010859 +0100
+@@ -39,16 +39,16 @@ public:
+     explicit ProtocolVersion(uint8_t _major=0, uint8_t _minor=0)
+         : major_(_major), minor_(_minor) {}
+ 
+-    QPID_COMMON_EXTERN uint8_t getMajor() const { return major_; }
+-    QPID_COMMON_EXTERN void setMajor(uint8_t major) { major_ = major; }
+-    QPID_COMMON_EXTERN uint8_t getMinor() const { return minor_; }
+-    QPID_COMMON_EXTERN void setMinor(uint8_t minor) { minor_ = minor; }
++    QPID_COMMON_INLINE_EXTERN uint8_t getMajor() const { return major_; }
++    QPID_COMMON_INLINE_EXTERN void setMajor(uint8_t major) { major_ = major; }
++    QPID_COMMON_INLINE_EXTERN uint8_t getMinor() const { return minor_; }
++    QPID_COMMON_INLINE_EXTERN void setMinor(uint8_t minor) { minor_ = minor; }
+     QPID_COMMON_EXTERN const std::string toString() const;
+ 
+     QPID_COMMON_EXTERN ProtocolVersion& operator=(ProtocolVersion p);
+ 
+     QPID_COMMON_EXTERN bool operator==(ProtocolVersion p) const;
+-    QPID_COMMON_EXTERN bool operator!=(ProtocolVersion p) const { return ! (*this == p); }
++    QPID_COMMON_INLINE_EXTERN bool operator!=(ProtocolVersion p) const { return ! (*this == p); }
+ };
+ 
+ } // namespace framing
+Index: cpp/include/qpid/framing/Uuid.h
+===================================================================
+--- cpp/include/qpid/framing/Uuid.h.orig	2010-11-02 00:51:18.000000000 +0100
++++ cpp/include/qpid/framing/Uuid.h	2010-12-03 16:37:07.490888257 +0100
+@@ -67,7 +67,7 @@ struct Uuid : public boost::array<uint8_
+ 
+     QPID_COMMON_EXTERN void encode(framing::Buffer& buf) const;
+     QPID_COMMON_EXTERN void decode(framing::Buffer& buf);
+-    QPID_COMMON_EXTERN uint32_t encodedSize() const
++    uint32_t encodedSize() const
+         { return static_cast<uint32_t>(size()); }
+ 
+     /** String value in format 1b4e28ba-2fa1-11d2-883f-b9a761bde3fb. */
+Index: cpp/include/qpid/log/Logger.h
+===================================================================
+--- cpp/include/qpid/log/Logger.h.orig	2010-05-12 21:20:41.000000000 +0200
++++ cpp/include/qpid/log/Logger.h	2010-12-03 16:36:41.080010653 +0100
+@@ -90,7 +90,7 @@ class Logger : private boost::noncopyabl
+     QPID_COMMON_EXTERN void clear();
+ 
+     /** Get the options used to configure the logger. */
+-    QPID_COMMON_EXTERN const Options& getOptions() const { return options; }
++    QPID_COMMON_INLINE_EXTERN const Options& getOptions() const { return options; }
+ 
+ 
+   private:
+Index: cpp/include/qpid/management/ManagementObject.h
+===================================================================
+--- cpp/include/qpid/management/ManagementObject.h.orig	2010-07-08 22:29:52.000000000 +0200
++++ cpp/include/qpid/management/ManagementObject.h	2010-12-03 16:36:41.082010996 +0100
+@@ -58,14 +58,14 @@ protected:
+     std::string agentName;
+     void fromString(const std::string&);
+ public:
+-    QPID_COMMON_EXTERN ObjectId() : agent(0), first(0), second(0), agentEpoch(0) {}
+-    QPID_COMMON_EXTERN ObjectId(const types::Variant& map) :
++    QPID_COMMON_INLINE_EXTERN ObjectId() : agent(0), first(0), second(0), agentEpoch(0) {}
++    QPID_COMMON_INLINE_EXTERN ObjectId(const types::Variant& map) :
+     agent(0), first(0), second(0), agentEpoch(0) { mapDecode(map.asMap()); }
+     QPID_COMMON_EXTERN ObjectId(uint8_t flags, uint16_t seq, uint32_t broker);
+     QPID_COMMON_EXTERN ObjectId(AgentAttachment* _agent, uint8_t flags, uint16_t seq);
+     QPID_COMMON_EXTERN ObjectId(std::istream&);
+     QPID_COMMON_EXTERN ObjectId(const std::string&);
+-    QPID_COMMON_EXTERN ObjectId(const std::string& agentAddress, const std::string& key,
++    QPID_COMMON_INLINE_EXTERN ObjectId(const std::string& agentAddress, const std::string& key,
+                                 uint64_t epoch=0) : agent(0), first(0), second(0),
+       agentEpoch(epoch), v2Key(key), agentName(agentAddress) {}
+ 
+@@ -76,16 +76,16 @@ public:
+     QPID_COMMON_EXTERN void mapEncode(types::Variant::Map& map) const;
+     QPID_COMMON_EXTERN void mapDecode(const types::Variant::Map& map);
+     QPID_COMMON_EXTERN operator types::Variant::Map() const;
+-    QPID_COMMON_EXTERN uint32_t encodedSize() const { return 16; };
++    QPID_COMMON_INLINE_EXTERN uint32_t encodedSize() const { return 16; };
+     QPID_COMMON_EXTERN void encode(std::string& buffer) const;
+     QPID_COMMON_EXTERN void decode(const std::string& buffer);
+     QPID_COMMON_EXTERN bool equalV1(const ObjectId &other) const;
+-    QPID_COMMON_EXTERN void setV2Key(const std::string& _key) { v2Key = _key; }
++    QPID_COMMON_INLINE_EXTERN void setV2Key(const std::string& _key) { v2Key = _key; }
+     QPID_COMMON_EXTERN void setV2Key(const ManagementObject& object);
+     QPID_COMMON_EXTERN void disambiguate();
+-    QPID_COMMON_EXTERN void setAgentName(const std::string& _name) { agentName = _name; }
+-    QPID_COMMON_EXTERN const std::string& getAgentName() const { return agentName; }
+-    QPID_COMMON_EXTERN const std::string& getV2Key() const { return v2Key; }
++    QPID_COMMON_INLINE_EXTERN void setAgentName(const std::string& _name) { agentName = _name; }
++    QPID_COMMON_INLINE_EXTERN const std::string& getAgentName() const { return agentName; }
++    QPID_COMMON_INLINE_EXTERN const std::string& getV2Key() const { return v2Key; }
+     friend QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream&, const ObjectId&);
+ };
+ 
+@@ -132,7 +132,7 @@ public:
+     virtual ~ManagementItem() {}
+ };
+ 
+-class ManagementObject : public ManagementItem
++class QPID_COMMON_CLASS_EXTERN ManagementObject : public ManagementItem
+ {
+ protected:
+ 
+Index: cpp/include/qpid/messaging/Handle.h
+===================================================================
+--- cpp/include/qpid/messaging/Handle.h.orig	2010-05-18 19:26:58.000000000 +0200
++++ cpp/include/qpid/messaging/Handle.h	2010-12-03 16:36:41.082010996 +0100
+@@ -40,22 +40,22 @@ template <class T> class Handle {
+   public:
+ 
+     /**@return true if handle is valid,  i.e. not null. */
+-    QPID_MESSAGING_EXTERN bool isValid() const { return impl; }
++    QPID_MESSAGING_INLINE_EXTERN bool isValid() const { return impl; }
+ 
+     /**@return true if handle is null. It is an error to call any function on a null handle. */
+-    QPID_MESSAGING_EXTERN bool isNull() const { return !impl; }
++    QPID_MESSAGING_INLINE_EXTERN bool isNull() const { return !impl; }
+ 
+     /** Conversion to bool supports idiom if (handle) { handle->... } */
+-    QPID_MESSAGING_EXTERN operator bool() const { return impl; }
++    QPID_MESSAGING_INLINE_EXTERN operator bool() const { return impl; }
+ 
+     /** Operator ! supports idiom if (!handle) { do_if_handle_is_null(); } */
+-    QPID_MESSAGING_EXTERN bool operator !() const { return !impl; }
++    QPID_MESSAGING_INLINE_EXTERN bool operator !() const { return !impl; }
+ 
+     void swap(Handle<T>& h) { T* t = h.impl; h.impl = impl; impl = t; }
+ 
+   protected:
+     typedef T Impl;
+-    QPID_MESSAGING_EXTERN Handle() :impl() {}
++    QPID_MESSAGING_INLINE_EXTERN Handle() :impl() {}
+ 
+     // Not implemented,subclasses must implement.
+     QPID_MESSAGING_EXTERN Handle(const Handle&);
+Index: cpp/include/qpid/messaging/ImportExport.h
+===================================================================
+--- cpp/include/qpid/messaging/ImportExport.h.orig	2010-05-18 19:26:58.000000000 +0200
++++ cpp/include/qpid/messaging/ImportExport.h	2010-12-03 16:36:41.083010644 +0100
+@@ -26,8 +26,17 @@
+ #else
+ #define QPID_MESSAGING_EXTERN __declspec(dllimport)
+ #endif
++#ifdef _MSC_VER
++#  define QPID_MESSAGING_CLASS_EXTERN
++#  define QPID_MESSAGING_INLINE_EXTERN QPID_MESSAGING_EXTERN
++#else
++#  define QPID_MESSAGING_CLASS_EXTERN QPID_MESSAGING_EXTERN
++#  define QPID_MESSAGING_INLINE_EXTERN
++#endif
+ #else
+ #define QPID_MESSAGING_EXTERN
++#define QPID_MESSAGING_CLASS_EXTERN
++#define QPID_MESSAGING_INLINE_EXTERN
+ #endif
+ 
+ #endif  /*!QPID_MESSAGING_IMPORTEXPORT_H*/
+Index: cpp/include/qpid/sys/IntegerTypes.h
+===================================================================
+--- cpp/include/qpid/sys/IntegerTypes.h.orig	2009-07-15 18:45:21.000000000 +0200
++++ cpp/include/qpid/sys/IntegerTypes.h	2010-12-03 16:36:41.083010644 +0100
+@@ -21,7 +21,7 @@
+  *
+  */
+ 
+-#if (defined(_WINDOWS) || defined (WIN32)) && defined(_MSC_VER)
++#if (defined(_WINDOWS) || defined (WIN32))
+ #include "qpid/sys/windows/IntegerTypes.h"
+ #endif
+ #if !defined _WINDOWS && !defined WIN32
+Index: cpp/include/qpid/sys/Runnable.h
+===================================================================
+--- cpp/include/qpid/sys/Runnable.h.orig	2009-07-15 18:45:21.000000000 +0200
++++ cpp/include/qpid/sys/Runnable.h	2010-12-03 16:36:41.083010644 +0100
+@@ -30,7 +30,7 @@ namespace sys {
+ /**
+  * Interface for objects that can be run, e.g. in a thread.
+  */
+-class Runnable
++class QPID_COMMON_CLASS_EXTERN Runnable
+ {
+   public:
+     /** Type to represent a runnable as a Functor */
+Index: cpp/include/qpid/sys/Thread.h
+===================================================================
+--- cpp/include/qpid/sys/Thread.h.orig	2010-04-22 00:07:04.000000000 +0200
++++ cpp/include/qpid/sys/Thread.h	2010-12-03 16:36:41.083010644 +0100
+@@ -25,7 +25,11 @@
+ #include "qpid/CommonImportExport.h"
+ 
+ #ifdef _WIN32
+-#  define QPID_TSS __declspec(thread)
++#  ifdef _MSC_VER
++#    define QPID_TSS __declspec(thread)
++#  else
++#    define QPID_TSS __thread
++#  endif
+ #elif defined (__GNUC__)
+ #  define QPID_TSS __thread
+ #elif defined (__SUNPRO_CC)
+Index: cpp/include/qpid/sys/Time.h
+===================================================================
+--- cpp/include/qpid/sys/Time.h.orig	2010-04-23 05:59:52.000000000 +0200
++++ cpp/include/qpid/sys/Time.h	2010-12-03 16:36:41.083010644 +0100
+@@ -119,7 +119,7 @@ class Duration {
+     friend class AbsTime;
+ 
+ public:
+-    QPID_COMMON_EXTERN inline Duration(int64_t time0 = 0);
++    QPID_COMMON_INLINE_EXTERN inline Duration(int64_t time0 = 0);
+     QPID_COMMON_EXTERN explicit Duration(const AbsTime& start, const AbsTime& finish);
+     inline operator int64_t() const;
+ };
+Index: cpp/include/qpid/sys/windows/IntegerTypes.h
+===================================================================
+--- cpp/include/qpid/sys/windows/IntegerTypes.h.orig	2009-12-15 19:24:02.000000000 +0100
++++ cpp/include/qpid/sys/windows/IntegerTypes.h	2010-12-03 16:36:41.083010644 +0100
+@@ -22,13 +22,17 @@
+  */
+ 
+ typedef unsigned char    uint8_t;
+-typedef char             int8_t;
+ typedef unsigned short   uint16_t;
+ typedef short            int16_t;
+ typedef unsigned int     uint32_t;
+ typedef int              int32_t;
++#if defined(_MSC_VER)
++typedef char             int8_t;
+ typedef unsigned __int64 uint64_t;
+ typedef          __int64 int64_t;
++#else
++#include <stdint.h>
++#endif
+ 
+ // Visual Studio doesn't define other common types, so set them up here too.
+ typedef unsigned int     uint;
+Index: cpp/rubygen/0-10/specification.rb
+===================================================================
+--- cpp/rubygen/0-10/specification.rb.orig	2009-07-14 16:32:39.000000000 +0200
++++ cpp/rubygen/0-10/specification.rb	2010-12-03 16:36:41.079011005 +0100
+@@ -252,7 +252,7 @@ class Specification < CppGen
+       include "#{@dir}/specification"
+       namespace(@ns) { 
+         genl "template <class F, class R=typename F::result_type>"
+-        cpp_class("ProxyTemplate") {
++        cpp_extern_class("QPID_COMMON_CLASS_EXTERN", "ProxyTemplate") {
+           public
+           genl "ProxyTemplate(F f=F()) : functor(f) {}"
+           @amqp.classes.each { |c|
+Index: cpp/rubygen/MethodBodyDefaultVisitor.rb
+===================================================================
+--- cpp/rubygen/MethodBodyDefaultVisitor.rb.orig	2008-12-16 05:43:10.000000000 +0100
++++ cpp/rubygen/MethodBodyDefaultVisitor.rb	2010-12-03 16:36:41.079011005 +0100
+@@ -33,7 +33,7 @@ class MethodBodyDefaultVisitorGen < CppG
+       include "qpid/framing/MethodBodyConstVisitor"
+       namespace(@namespace) { 
+         genl
+-        cpp_class(@classname, "public MethodBodyConstVisitor") {
++        cpp_extern_class("QPID_COMMON_CLASS_EXTERN", @classname, "public MethodBodyConstVisitor") {
+           genl "public:"
+           genl "virtual void defaultVisit() = 0;"
+           @amqp.methods_.each { |m|
+Index: cpp/rubygen/cppgen.rb
+===================================================================
+--- cpp/rubygen/cppgen.rb.orig	2010-10-14 21:38:40.000000000 +0200
++++ cpp/rubygen/cppgen.rb	2010-12-03 16:36:41.079011005 +0100
+@@ -377,6 +377,9 @@ class CppGen < Generator
+   def cpp_class(name, *bases, &block)
+     struct_class("class", name, bases, &block);
+   end
++  def cpp_extern_class(scope, name, *bases, &block)
++    struct_class("class "+scope, name, bases, &block);
++  end
+ 
+   def typedef(type, name) genl "typedef #{type} #{name};\n"; end
+ 
+Index: cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb
+===================================================================
+--- cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb.orig	2009-07-14 16:32:39.000000000 +0200
++++ cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb	2010-12-03 16:36:41.079011005 +0100
+@@ -33,7 +33,7 @@ class MethodBodyDefaultVisitorGen < CppG
+       include "qpid/CommonImportExport.h"
+       namespace(@namespace) { 
+         genl "class AMQMethodBody;"
+-        cpp_class(@classname, "public MethodBodyConstVisitor") {
++        cpp_extern_class("QPID_COMMON_CLASS_EXTERN", @classname, "public MethodBodyConstVisitor") {
+           genl "public:"
+           genl "virtual void defaultVisit(const AMQMethodBody&) = 0;"
+           @amqp.methods_.each { |m|
+Index: cpp/rubygen/framing.0-10/OperationsInvoker.rb
+===================================================================
+--- cpp/rubygen/framing.0-10/OperationsInvoker.rb.orig	2009-07-27 23:32:16.000000000 +0200
++++ cpp/rubygen/framing.0-10/OperationsInvoker.rb	2010-12-03 16:36:41.078011078 +0100
+@@ -69,7 +69,7 @@ class OperationsInvokerGen < CppGen
+   def invoker_h(invoker, target, methods)
+     return if methods.empty?
+     genl
+-    cpp_class(invoker, "public qpid::framing::Invoker") {
++    cpp_extern_class("QPID_COMMON_CLASS_EXTERN", invoker, "public qpid::framing::Invoker") {
+       genl "#{target}& target;"
+       public
+       genl("Invoker(#{target}& target_) : target(target_) {}")
+Index: cpp/rubygen/framing.0-10/Proxy.rb
+===================================================================
+--- cpp/rubygen/framing.0-10/Proxy.rb.orig	2009-07-14 16:32:39.000000000 +0200
++++ cpp/rubygen/framing.0-10/Proxy.rb	2010-12-03 16:36:41.078011078 +0100
+@@ -37,7 +37,7 @@ class ProxyGen < CppGen
+   
+   def inner_class_decl(c)
+     cname=c.name.caps
+-    cpp_class(cname, "public Proxy") {
++    cpp_extern_class("QPID_COMMON_CLASS_EXTERN", cname, "public Proxy") {
+           gen <<EOS
+ public:
+ #{cname}(FrameHandler& f) : Proxy(f) {}
+@@ -69,7 +69,7 @@ EOS
+       include "qpid/CommonImportExport.h"
+ 
+       namespace("qpid::framing") { 
+-        cpp_class(@classname, "public Proxy") {
++        cpp_extern_class("QPID_COMMON_CLASS_EXTERN", @classname, "public Proxy") {
+           public
+           genl "QPID_COMMON_EXTERN #{@classname}(FrameHandler& out);"
+           genl
+Index: cpp/rubygen/framing.0-10/Session.rb
+===================================================================
+--- cpp/rubygen/framing.0-10/Session.rb.orig	2009-07-27 23:32:16.000000000 +0200
++++ cpp/rubygen/framing.0-10/Session.rb	2010-12-03 16:36:41.079011005 +0100
+@@ -56,8 +56,8 @@ module SyncAsync
+   def decl_ctor_opeq()
+     genl
+     genl "QPID_CLIENT_EXTERN #{@classname}();"
+-    genl "QPID_CLIENT_EXTERN #{@classname}(const #{@version_base}& other);"
+-    genl "QPID_CLIENT_EXTERN #{@classname}& operator=(const #{@version_base}& other);"
++    genl "QPID_CLIENT_INLINE_EXTERN #{@classname}(const #{@version_base}& other);"
++    genl "QPID_CLIENT_INLINE_EXTERN #{@classname}& operator=(const #{@version_base}& other);"
+   end
+ 
+   def defn_ctor_opeq(inline="")
+Index: cpp/rubygen/framing.0-10/structs.rb
+===================================================================
+--- cpp/rubygen/framing.0-10/structs.rb.orig	2009-10-05 19:03:41.000000000 +0200
++++ cpp/rubygen/framing.0-10/structs.rb	2010-12-03 16:36:41.079011005 +0100
+@@ -406,7 +406,7 @@ EOS
+ namespace qpid {
+ namespace framing {
+ 
+-class #{classname} #{inheritance} {
++class QPID_COMMON_CLASS_EXTERN #{classname} #{inheritance} {
+ EOS
+   if (is_packed(s))
+     indent { s.fields.each { |f| genl "#{f.cpptype.name} #{f.cppname};" unless f.type_ == "bit"} }
+Index: cpp/src/CMakeLists.txt
+===================================================================
+--- cpp/src/CMakeLists.txt.orig	2010-11-22 19:26:29.000000000 +0100
++++ cpp/src/CMakeLists.txt	2010-12-03 16:36:41.078011078 +0100
+@@ -631,7 +631,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL Windows)
+   )
+ 
+   set (qpidcommon_platform_LIBS
+-    ${windows_ssl_libs} ws2_32
++    ${Boost_THREAD_LIBRARY} ${windows_ssl_libs} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_DATE_TIME_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY} ws2_32
+   )
+   set (qpidbroker_platform_SOURCES
+     qpid/broker/windows/BrokerDefaults.cpp
+@@ -932,7 +932,7 @@ if (NOT QPID_GENERATED_HEADERS_IN_SOURCE
+ endif (NOT QPID_GENERATED_HEADERS_IN_SOURCE)
+ 
+ 
+-if (WIN32)
++if (_MSC_VER)
+     # Install the DtcPlugin project and call it qpidxarm.
+     set(AMQP_WCF_DIR ${qpid-cpp_SOURCE_DIR}/../wcf)
+     set(qpidxarm_SOURCES ${AMQP_WCF_DIR}/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp)
+@@ -945,7 +945,7 @@ if (WIN32)
+                  COMPONENT ${QPID_COMPONENT_CLIENT})
+         install_pdb (qpidxarm ${QPID_COMPONENT_CLIENT})
+     endif (EXISTS ${qpidxarm_SOURCES})
+-endif (WIN32)
++endif (_MSC_VER)
+ 
+ set (qpidbroker_SOURCES
+      ${mgen_broker_cpp}
+Index: cpp/src/qpid/amqp_0_10/SessionHandler.h
+===================================================================
+--- cpp/src/qpid/amqp_0_10/SessionHandler.h.orig	2010-01-22 11:58:20.000000000 +0100
++++ cpp/src/qpid/amqp_0_10/SessionHandler.h	2010-12-03 16:36:41.073889006 +0100
+@@ -41,7 +41,7 @@ namespace amqp_0_10 {
+  * to a session state.
+  */
+ 
+-class SessionHandler : public framing::AMQP_AllOperations::SessionHandler,
++class QPID_COMMON_CLASS_EXTERN SessionHandler : public framing::AMQP_AllOperations::SessionHandler,
+                        public framing::FrameHandler::InOutHandler
+ {
+   public:
+Index: cpp/src/qpid/broker/BrokerImportExport.h
+===================================================================
+--- cpp/src/qpid/broker/BrokerImportExport.h.orig	2009-04-24 00:59:12.000000000 +0200
++++ cpp/src/qpid/broker/BrokerImportExport.h	2010-12-03 16:36:41.072893059 +0100
+@@ -26,8 +26,17 @@
+ #else
+ #define QPID_BROKER_EXTERN __declspec(dllimport)
+ #endif
++#ifdef _MSC_VER
++#  define QPID_BROKER_CLASS_EXTERN
++#  define QPID_BROKER_INLINE_EXTERN QPID_BROKER_EXTERN
++#else
++#  define QPID_BROKER_CLASS_EXTERN QPID_BROKER_EXTERN
++#  define QPID_BROKER_INLINE_EXTERN
++#endif
+ #else
+ #define QPID_BROKER_EXTERN 
++#define QPID_BROKER_CLASS_EXTERN
++#define QPID_BROKER_INLINE_EXTERN
+ #endif
+ 
+ #endif
+Index: cpp/src/qpid/broker/DeliverableMessage.h
+===================================================================
+--- cpp/src/qpid/broker/DeliverableMessage.h.orig	2010-10-14 21:38:40.000000000 +0200
++++ cpp/src/qpid/broker/DeliverableMessage.h	2010-12-03 16:36:41.073889006 +0100
+@@ -29,7 +29,7 @@
+ 
+ namespace qpid {
+     namespace broker {
+-        class DeliverableMessage : public Deliverable{
++        class QPID_BROKER_CLASS_EXTERN DeliverableMessage : public Deliverable{
+             boost::intrusive_ptr<Message> msg;
+         public:
+             QPID_BROKER_EXTERN DeliverableMessage(const boost::intrusive_ptr<Message>& msg);
+Index: cpp/src/qpid/broker/Exchange.h
+===================================================================
+--- cpp/src/qpid/broker/Exchange.h.orig	2010-10-21 00:15:24.000000000 +0200
++++ cpp/src/qpid/broker/Exchange.h	2010-12-03 16:40:27.095013115 +0100
+@@ -39,7 +39,7 @@ namespace broker {
+ class Broker;
+ class ExchangeRegistry;
+ 
+-class Exchange : public PersistableExchange, public management::Manageable {
++class QPID_BROKER_CLASS_EXTERN Exchange : public PersistableExchange, public management::Manageable {
+ public:
+     struct Binding : public management::Manageable {
+         typedef boost::shared_ptr<Binding>       shared_ptr;
+@@ -147,7 +147,7 @@ public:
+                                          Broker* broker = 0);
+     QPID_BROKER_EXTERN Exchange(const std::string& _name, bool _durable, const qpid::framing::FieldTable& _args,
+                                 management::Manageable* parent = 0, Broker* broker = 0);
+-    QPID_BROKER_EXTERN virtual ~Exchange();
++    QPID_BROKER_INLINE_EXTERN virtual ~Exchange();
+ 
+     const std::string& getName() const { return name; }
+     bool isDurable() { return durable; }
+@@ -174,14 +174,14 @@ public:
+     virtual bool bind(boost::shared_ptr<Queue> queue, const std::string& routingKey, const qpid::framing::FieldTable* args) = 0;
+     virtual bool unbind(boost::shared_ptr<Queue> queue, const std::string& routingKey, const qpid::framing::FieldTable* args) = 0;
+     virtual bool isBound(boost::shared_ptr<Queue> queue, const std::string* const routingKey, const qpid::framing::FieldTable* const args) = 0;
+-    QPID_BROKER_EXTERN virtual void setProperties(const boost::intrusive_ptr<Message>&);
++    QPID_BROKER_INLINE_EXTERN virtual void setProperties(const boost::intrusive_ptr<Message>&);
+     virtual void route(Deliverable& msg, const std::string& routingKey, const qpid::framing::FieldTable* args) = 0;
+     
+     //PersistableExchange:
+     QPID_BROKER_EXTERN void setPersistenceId(uint64_t id) const;
+     uint64_t getPersistenceId() const { return persistenceId; }
+     QPID_BROKER_EXTERN uint32_t encodedSize() const;
+-    QPID_BROKER_EXTERN virtual void encode(framing::Buffer& buffer) const;
++    QPID_BROKER_INLINE_EXTERN virtual void encode(framing::Buffer& buffer) const;
+ 
+     static QPID_BROKER_EXTERN Exchange::shared_ptr decode(ExchangeRegistry& exchanges, framing::Buffer& buffer);
+ 
+@@ -212,7 +212,7 @@ protected:
+     std::vector<DynamicBridge*> bridgeVector;
+     Broker* broker;
+ 
+-    QPID_BROKER_EXTERN virtual void handleHelloRequest();
++    QPID_BROKER_INLINE_EXTERN virtual void handleHelloRequest();
+     void propagateFedOp(const std::string& routingKey, const std::string& tags,
+                         const std::string& op,         const std::string& origin, 
+                         qpid::framing::FieldTable* extra_args=0);
+Index: cpp/src/qpid/broker/ExpiryPolicy.h
+===================================================================
+--- cpp/src/qpid/broker/ExpiryPolicy.h.orig	2009-07-14 16:32:39.000000000 +0200
++++ cpp/src/qpid/broker/ExpiryPolicy.h	2010-12-03 16:36:41.072893059 +0100
+@@ -33,7 +33,7 @@ class Message;
+ /**
+  * Default expiry policy.
+  */
+-class ExpiryPolicy : public RefCounted
++class QPID_BROKER_CLASS_EXTERN ExpiryPolicy : public RefCounted
+ {
+   public:
+     QPID_BROKER_EXTERN virtual ~ExpiryPolicy();
+Index: cpp/src/qpid/broker/MessageBuilder.h
+===================================================================
+--- cpp/src/qpid/broker/MessageBuilder.h.orig	2010-04-15 17:57:46.000000000 +0200
++++ cpp/src/qpid/broker/MessageBuilder.h	2010-12-03 16:36:41.072893059 +0100
+@@ -33,7 +33,7 @@ namespace qpid {
+         class Message;
+         class MessageStore;
+ 
+-        class MessageBuilder : public framing::FrameHandler{
++        class QPID_BROKER_CLASS_EXTERN MessageBuilder : public framing::FrameHandler{
+         public:
+             QPID_BROKER_EXTERN MessageBuilder(MessageStore* const store);
+             QPID_BROKER_EXTERN void handle(framing::AMQFrame& frame);
+Index: cpp/src/qpid/broker/NullMessageStore.h
+===================================================================
+--- cpp/src/qpid/broker/NullMessageStore.h.orig	2009-11-20 16:57:10.000000000 +0100
++++ cpp/src/qpid/broker/NullMessageStore.h	2010-12-03 16:36:41.072893059 +0100
+@@ -34,7 +34,7 @@ namespace broker {
+ /**
+  * A null implementation of the MessageStore interface
+  */
+-class NullMessageStore : public MessageStore
++class QPID_BROKER_CLASS_EXTERN NullMessageStore : public MessageStore
+ {
+     std::set<std::string> prepared;
+     uint64_t nextPersistenceId;
+Index: cpp/src/qpid/broker/TopicExchange.h
+===================================================================
+--- cpp/src/qpid/broker/TopicExchange.h.orig	2010-10-26 19:22:57.000000000 +0200
++++ cpp/src/qpid/broker/TopicExchange.h	2010-12-03 17:04:07.164012945 +0100
+@@ -56,7 +56,7 @@ class TopicExchange : public virtual Exc
+     //    |   +-->d-->...
+     //    +-->x-->y-->...
+     //
+-    class BindingNode {
++    class QPID_BROKER_EXTERN BindingNode {
+     public:
+ 
+         typedef boost::shared_ptr<BindingNode> shared_ptr;
+Index: cpp/src/qpid/broker/TxPublish.h
+===================================================================
+--- cpp/src/qpid/broker/TxPublish.h.orig	2010-10-14 21:38:40.000000000 +0200
++++ cpp/src/qpid/broker/TxPublish.h	2010-12-03 16:36:41.073889006 +0100
+@@ -45,7 +45,7 @@ namespace qpid {
+          * commit() the messages will be passed to the queue for
+          * dispatch or to be added to the in-memory queue.
+          */
+-        class TxPublish : public TxOp, public Deliverable{
++        class QPID_BROKER_CLASS_EXTERN TxPublish : public TxOp, public Deliverable{
+ 
+             class Commit{
+                 boost::intrusive_ptr<Message>& msg;
+Index: cpp/src/qpid/broker/windows/BrokerDefaults.cpp
+===================================================================
+--- cpp/src/qpid/broker/windows/BrokerDefaults.cpp.orig	2009-07-13 23:27:14.000000000 +0200
++++ cpp/src/qpid/broker/windows/BrokerDefaults.cpp	2010-12-03 16:36:41.071885727 +0100
+@@ -31,10 +31,16 @@ const std::string Broker::Options::DEFAU
+ std::string
+ Broker::Options::getHome() {
+     std::string home;
++#ifdef _MSC_VER
+     char home_c[MAX_PATH+1];
+     size_t unused;
+     if (0 == getenv_s (&unused, home_c, sizeof(home_c), "HOME"))
+         home += home_c;
++#else	
++    char *home_c = getenv("HOME");
++    if( home_c )
++        home += home_c;
++#endif
+     return home;
+ }
+ 
+Index: cpp/src/qpid/broker/windows/SaslAuthenticator.cpp
+===================================================================
+--- cpp/src/qpid/broker/windows/SaslAuthenticator.cpp.orig	2010-05-25 17:13:08.000000000 +0200
++++ cpp/src/qpid/broker/windows/SaslAuthenticator.cpp	2010-12-03 16:36:41.072893059 +0100
+@@ -159,8 +159,12 @@ void SspiAuthenticator::start(const stri
+     string::size_type j = response.find((char)0, i+1);
+     string uid = response.substr(i+1, j-1);
+     string pwd = response.substr(j+1);
++    string dot(".");
+     int error = 0;
+-    if (!LogonUser(uid.c_str(), ".", pwd.c_str(),
++
++    if (!LogonUser(const_cast<char*>(uid.c_str()),
++                   const_cast<char*>(dot.c_str()),
++                   const_cast<char*>(pwd.c_str()),
+                    LOGON32_LOGON_NETWORK,
+                    LOGON32_PROVIDER_DEFAULT,
+                    &userToken))
+@@ -176,7 +180,7 @@ void SspiAuthenticator::start(const stri
+     client.tune(framing::CHANNEL_MAX, connection.getFrameMax(), 0, 0);
+ }
+         
+-void SspiAuthenticator::step(const string& response)
++void SspiAuthenticator::step(const string& /*response*/)
+ {
+   QPID_LOG(info, "SASL: Need another step!!!");
+ }
+Index: cpp/src/qpid/broker/windows/SslProtocolFactory.cpp
+===================================================================
+--- cpp/src/qpid/broker/windows/SslProtocolFactory.cpp.orig	2010-10-11 18:46:43.000000000 +0200
++++ cpp/src/qpid/broker/windows/SslProtocolFactory.cpp	2010-12-03 16:36:41.071885727 +0100
+@@ -34,10 +34,32 @@
+ // security.h needs to see this to distinguish from kernel use.
+ #define SECURITY_WIN32
+ #include <security.h>
+-#include <Schnlsp.h>
++#include <schnlsp.h>
+ #undef SECURITY_WIN32
+ 
++#ifndef _MSC_VER
++/* Macros borrowed from 
++ *   http://github.com/mirrors/wine/blob/master/include/sspi.h
++ * under LGPL 2.1+
++ */
++#define SecInvalidateHandle(x) do { \
++ ((PSecHandle)(x))->dwLower = ((ULONG_PTR)((INT_PTR)-1)); \
++ ((PSecHandle)(x))->dwUpper = ((ULONG_PTR)((INT_PTR)-1)); \
++ } while (0)
++
++#define SecIsValidHandle(x) \
++ ((((PSecHandle)(x))->dwLower != ((ULONG_PTR)(INT_PTR)-1)) && \
++ (((PSecHandle)(x))->dwUpper != ((ULONG_PTR)(INT_PTR)-1)))
++
++/* Definition from
++ *   http://github.com/mirrors/wine/blob/master/include/wincrypt.h
++ * under LGPL 2.1+
++ */
++#define CERT_STORE_PROV_SYSTEM_A             ((LPCSTR)9)
+ 
++#endif
++
++ 
+ namespace qpid {
+ namespace sys {
+ namespace windows {
+@@ -165,7 +187,7 @@ SslProtocolFactory::SslProtocolFactory(c
+     cred.cCreds = 1;
+     cred.paCred = &certContext;
+     SECURITY_STATUS status = ::AcquireCredentialsHandle(NULL,
+-                                                        UNISP_NAME,
++                                                        const_cast<char*>(UNISP_NAME),
+                                                         SECPKG_CRED_INBOUND,
+                                                         NULL,
+                                                         &cred,
+@@ -259,7 +281,7 @@ void SslProtocolFactory::connect(sys::Po
+     memset(&cred, 0, sizeof(cred));
+     cred.dwVersion = SCHANNEL_CRED_VERSION;
+     SECURITY_STATUS status = ::AcquireCredentialsHandle(NULL,
+-                                                        UNISP_NAME,
++                                                        const_cast<char*>(UNISP_NAME),
+                                                         SECPKG_CRED_OUTBOUND,
+                                                         NULL,
+                                                         &cred,
+Index: cpp/src/qpid/client/windows/SaslFactory.cpp
+===================================================================
+--- cpp/src/qpid/client/windows/SaslFactory.cpp.orig	2010-10-22 00:04:07.000000000 +0200
++++ cpp/src/qpid/client/windows/SaslFactory.cpp	2010-12-03 16:36:41.073889006 +0100
+@@ -153,7 +153,7 @@ std::string WindowsSasl::start(const std
+     return resp;
+ }
+ 
+-std::string WindowsSasl::step(const std::string& challenge)
++std::string WindowsSasl::step(const std::string& /*challenge*/)
+ {
+     // Shouldn't get this for PLAIN...
+     throw InternalErrorException(QPID_MSG("Sasl step error"));
+@@ -169,7 +169,7 @@ std::string WindowsSasl::getUserId()
+     return std::string(); // TODO - when GSSAPI is supported, return userId for connection.
+ }
+ 
+-std::auto_ptr<SecurityLayer> WindowsSasl::getSecurityLayer(uint16_t maxFrameSize)
++std::auto_ptr<SecurityLayer> WindowsSasl::getSecurityLayer(uint16_t /*maxFrameSize*/)
+ {
+     return std::auto_ptr<SecurityLayer>(0);
+ }
+Index: cpp/src/qpid/client/windows/SslConnector.cpp
+===================================================================
+--- cpp/src/qpid/client/windows/SslConnector.cpp.orig	2010-10-11 18:46:43.000000000 +0200
++++ cpp/src/qpid/client/windows/SslConnector.cpp	2010-12-03 16:36:41.074888444 +0100
+@@ -40,7 +40,7 @@
+ // security.h needs to see this to distinguish from kernel use.
+ #define SECURITY_WIN32
+ #include <security.h>
+-#include <Schnlsp.h>
++#include <schnlsp.h>
+ #undef SECURITY_WIN32
+ #include <winsock2.h>
+ 
+@@ -133,7 +133,7 @@ SslConnector::SslConnector(boost::shared
+     memset(&cred, 0, sizeof(cred));
+     cred.dwVersion = SCHANNEL_CRED_VERSION;
+     SECURITY_STATUS status = ::AcquireCredentialsHandle(NULL,
+-                                                        UNISP_NAME,
++                                                        const_cast<char*>(UNISP_NAME),
+                                                         SECPKG_CRED_OUTBOUND,
+                                                         NULL,
+                                                         &cred,
+Index: cpp/src/qpid/framing/AMQBody.h
+===================================================================
+--- cpp/src/qpid/framing/AMQBody.h.orig	2009-03-12 21:55:34.000000000 +0100
++++ cpp/src/qpid/framing/AMQBody.h	2010-12-03 16:36:41.071885727 +0100
+@@ -46,7 +46,7 @@ struct AMQBodyConstVisitor {
+     virtual void visit(const AMQMethodBody&) = 0;
+ };
+ 
+-class AMQBody : public RefCounted {
++class QPID_COMMON_CLASS_EXTERN AMQBody : public RefCounted {
+   public:
+     AMQBody() {}
+     QPID_COMMON_EXTERN virtual ~AMQBody();
+Index: cpp/src/qpid/framing/AMQContentBody.h
+===================================================================
+--- cpp/src/qpid/framing/AMQContentBody.h.orig	2009-07-14 16:32:39.000000000 +0200
++++ cpp/src/qpid/framing/AMQContentBody.h	2010-12-03 16:36:41.071885727 +0100
+@@ -29,7 +29,7 @@
+ namespace qpid {
+ namespace framing {
+ 
+-class AMQContentBody :  public AMQBody
++class QPID_COMMON_CLASS_EXTERN AMQContentBody :  public AMQBody
+ {
+     string data;
+ 
+@@ -37,15 +37,15 @@ public:
+     QPID_COMMON_EXTERN AMQContentBody();
+     QPID_COMMON_EXTERN AMQContentBody(const string& data);
+     inline virtual ~AMQContentBody(){}
+-    QPID_COMMON_EXTERN inline uint8_t type() const { return CONTENT_BODY; };
+-    QPID_COMMON_EXTERN inline const string& getData() const { return data; }
+-    QPID_COMMON_EXTERN inline string& getData() { return data; }
++    inline uint8_t type() const { return CONTENT_BODY; };
++    inline const string& getData() const { return data; }
++    inline string& getData() { return data; }
+     QPID_COMMON_EXTERN uint32_t encodedSize() const;
+     QPID_COMMON_EXTERN void encode(Buffer& buffer) const;
+     QPID_COMMON_EXTERN void decode(Buffer& buffer, uint32_t size);
+     QPID_COMMON_EXTERN void print(std::ostream& out) const;
+-    QPID_COMMON_EXTERN void accept(AMQBodyConstVisitor& v) const { v.visit(*this); }
+-    QPID_COMMON_EXTERN boost::intrusive_ptr<AMQBody> clone() const { return BodyFactory::copy(*this); }
++    void accept(AMQBodyConstVisitor& v) const { v.visit(*this); }
++    boost::intrusive_ptr<AMQBody> clone() const { return BodyFactory::copy(*this); }
+ };
+ 
+ }
+Index: cpp/src/qpid/framing/AMQFrame.h
+===================================================================
+--- cpp/src/qpid/framing/AMQFrame.h.orig	2010-05-14 18:08:33.000000000 +0200
++++ cpp/src/qpid/framing/AMQFrame.h	2010-12-03 16:36:41.070892086 +0100
+@@ -33,7 +33,7 @@
+ namespace qpid {
+ namespace framing {
+ 
+-class AMQFrame : public AMQDataBlock
++class QPID_COMMON_CLASS_EXTERN AMQFrame : public AMQDataBlock
+ {
+   public:
+     QPID_COMMON_EXTERN AMQFrame(const boost::intrusive_ptr<AMQBody>& b=0);
+Index: cpp/src/qpid/framing/AMQHeaderBody.h
+===================================================================
+--- cpp/src/qpid/framing/AMQHeaderBody.h.orig	2009-07-14 16:32:39.000000000 +0200
++++ cpp/src/qpid/framing/AMQHeaderBody.h	2010-12-03 16:36:41.070892086 +0100
+@@ -35,7 +35,7 @@
+ namespace qpid {
+ namespace framing {
+ 
+-class AMQHeaderBody :  public AMQBody
++class QPID_COMMON_CLASS_EXTERN AMQHeaderBody :  public AMQBody
+ {
+     template <class T> struct OptProps { boost::optional<T> props; };
+     template <class Base, class T>
+Index: cpp/src/qpid/framing/AMQHeartbeatBody.h
+===================================================================
+--- cpp/src/qpid/framing/AMQHeartbeatBody.h.orig	2009-07-14 16:32:39.000000000 +0200
++++ cpp/src/qpid/framing/AMQHeartbeatBody.h	2010-12-03 16:36:41.071885727 +0100
+@@ -29,7 +29,7 @@
+ namespace qpid {
+ namespace framing {
+ 
+-class AMQHeartbeatBody :  public AMQBody
++class QPID_COMMON_CLASS_EXTERN AMQHeartbeatBody :  public AMQBody
+ {
+ public:
+     QPID_COMMON_EXTERN virtual ~AMQHeartbeatBody();
+Index: cpp/src/qpid/framing/Invoker.h
+===================================================================
+--- cpp/src/qpid/framing/Invoker.h.orig	2008-04-24 19:42:59.000000000 +0200
++++ cpp/src/qpid/framing/Invoker.h	2010-12-03 16:36:41.071885727 +0100
+@@ -35,7 +35,7 @@ class AMQMethodBody;
+ /**
+  * Base class for invoker visitors.
+  */ 
+-class Invoker: public MethodBodyDefaultVisitor, protected StructHelper
++class QPID_COMMON_CLASS_EXTERN Invoker: public MethodBodyDefaultVisitor, protected StructHelper
+ {
+   public:
+     struct Result {
+Index: cpp/src/qpid/framing/TransferContent.h
+===================================================================
+--- cpp/src/qpid/framing/TransferContent.h.orig	2009-07-14 16:32:39.000000000 +0200
++++ cpp/src/qpid/framing/TransferContent.h	2010-12-03 16:36:41.071885727 +0100
+@@ -32,7 +32,7 @@ namespace qpid {
+ namespace framing {
+ 
+ /** Message content */
+-class TransferContent : public MethodContent
++class QPID_COMMON_CLASS_EXTERN TransferContent : public MethodContent
+ {
+     AMQHeaderBody header;
+     std::string data;
+Index: cpp/src/qpid/log/windows/SinkOptions.cpp
+===================================================================
+--- cpp/src/qpid/log/windows/SinkOptions.cpp.orig	2009-07-14 16:32:39.000000000 +0200
++++ cpp/src/qpid/log/windows/SinkOptions.cpp	2010-12-03 16:36:41.073889006 +0100
+@@ -53,7 +53,7 @@ static int eventTypes[qpid::log::LevelTr
+ 
+ class EventLogOutput : public qpid::log::Logger::Output {
+ public:
+-    EventLogOutput(const std::string& sourceName) : logHandle(0)
++    EventLogOutput(const std::string& /*sourceName*/) : logHandle(0)
+     {
+         logHandle = OpenEventLog(0, "Application");
+     }
+@@ -83,7 +83,7 @@ private:
+     HANDLE logHandle;
+ };
+ 
+-SinkOptions::SinkOptions(const std::string& argv0)
++SinkOptions::SinkOptions(const std::string& /*argv0*/)
+     : qpid::log::SinkOptions(),
+       logToStderr(true),
+       logToStdout(false),
+Index: cpp/src/qpid/log/windows/SinkOptions.h
+===================================================================
+--- cpp/src/qpid/log/windows/SinkOptions.h.orig	2009-03-12 21:55:34.000000000 +0100
++++ cpp/src/qpid/log/windows/SinkOptions.h	2010-12-03 16:36:41.073889006 +0100
+@@ -26,7 +26,7 @@ namespace qpid {
+ namespace log {
+ namespace windows {
+ 
+-struct SinkOptions : public qpid::log::SinkOptions {
++struct QPID_COMMON_CLASS_EXTERN SinkOptions : public qpid::log::SinkOptions {
+     QPID_COMMON_EXTERN SinkOptions(const std::string& argv0);
+     virtual ~SinkOptions() {}
+ 
+Index: cpp/src/qpid/sys/AggregateOutput.h
+===================================================================
+--- cpp/src/qpid/sys/AggregateOutput.h.orig	2010-01-14 19:55:46.000000000 +0100
++++ cpp/src/qpid/sys/AggregateOutput.h	2010-12-03 16:36:41.076893048 +0100
+@@ -41,7 +41,7 @@ namespace sys {
+  * doOutput is called in another.
+  */
+ 
+-class AggregateOutput : public OutputTask, public OutputControl
++class QPID_COMMON_CLASS_EXTERN AggregateOutput : public OutputTask, public OutputControl
+ {
+     typedef std::deque<OutputTask*> TaskList;
+ 
+Index: cpp/src/qpid/sys/AsynchIOHandler.h
+===================================================================
+--- cpp/src/qpid/sys/AsynchIOHandler.h.orig	2009-09-22 17:59:53.000000000 +0200
++++ cpp/src/qpid/sys/AsynchIOHandler.h	2010-12-03 16:36:41.076893048 +0100
+@@ -57,7 +57,7 @@ class AsynchIOHandler : public OutputCon
+     QPID_COMMON_EXTERN ~AsynchIOHandler();
+     QPID_COMMON_EXTERN void init(AsynchIO* a, int numBuffs);
+ 
+-    QPID_COMMON_EXTERN void setClient() { isClient = true; }
++    QPID_COMMON_INLINE_EXTERN void setClient() { isClient = true; }
+ 
+     // Output side
+     QPID_COMMON_EXTERN void abort();
+Index: cpp/src/qpid/sys/Poller.h
+===================================================================
+--- cpp/src/qpid/sys/Poller.h.orig	2010-07-28 21:07:04.000000000 +0200
++++ cpp/src/qpid/sys/Poller.h	2010-12-03 16:36:41.076893048 +0100
+@@ -120,7 +120,7 @@ class PollerHandle {
+     friend struct Poller::Event;
+ 
+     PollerHandlePrivate* const impl;
+-    QPID_COMMON_EXTERN virtual void processEvent(Poller::EventType) {};
++    QPID_COMMON_INLINE_EXTERN virtual void processEvent(Poller::EventType) {};
+ 
+ public:
+     QPID_COMMON_EXTERN PollerHandle(const IOHandle& h);
+Index: cpp/src/qpid/sys/alloca.h
+===================================================================
+--- cpp/src/qpid/sys/alloca.h.orig	2009-03-12 21:55:34.000000000 +0100
++++ cpp/src/qpid/sys/alloca.h	2010-12-03 16:36:41.074888444 +0100
+@@ -21,8 +21,10 @@
+  *
+  */
+ 
+-#if (defined(_WINDOWS) || defined (WIN32)) && defined(_MSC_VER)
++#if (defined(_WINDOWS) || defined (WIN32))
+ #include <malloc.h>
++
++#if defined(_MSC_VER)
+ #ifdef alloc
+ #  undef alloc
+ #endif
+@@ -36,4 +38,6 @@
+ #include <alloca.h>
+ #endif
+ 
++#endif /*_MSC_VER */
++
+ #endif  /*!QPID_SYS_ALLOCA_H*/
+Index: cpp/src/qpid/sys/windows/AsynchIO.cpp
+===================================================================
+--- cpp/src/qpid/sys/windows/AsynchIO.cpp.orig	2010-01-23 01:16:34.000000000 +0100
++++ cpp/src/qpid/sys/windows/AsynchIO.cpp	2010-12-03 16:36:41.075891514 +0100
+@@ -43,6 +43,12 @@
+ namespace {
+ 
+     typedef qpid::sys::ScopedLock<qpid::sys::Mutex>  QLock;
++#ifdef WIN32
++# ifndef _MSC_VER     
++#   define WSAID_ACCEPTEX {0xb5367df1,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
++    typedef BOOL (PASCAL *LPFN_ACCEPTEX)(SOCKET,SOCKET,PVOID,DWORD,DWORD,DWORD,LPDWORD,LPOVERLAPPED);
++#  endif
++#endif
+ 
+ /*
+  * The function pointers for AcceptEx and ConnectEx need to be looked up
+@@ -114,7 +120,8 @@ AsynchAcceptor::~AsynchAcceptor()
+ }
+ 
+ void AsynchAcceptor::start(Poller::shared_ptr poller) {
+-    poller->monitorHandle(PollerHandle(socket), Poller::INPUT);
++    PollerHandle ph = PollerHandle(socket);
++    poller->monitorHandle(ph, Poller::INPUT);
+     restart ();
+ }
+ 
+@@ -154,7 +161,7 @@ void AsynchAcceptResult::success(size_t 
+     delete this;
+ }
+ 
+-void AsynchAcceptResult::failure(int status) {
++void AsynchAcceptResult::failure(int /*status*/) {
+     //if (status != WSA_OPERATION_ABORTED)
+     // Can there be anything else?  ;
+     delete this;
+@@ -410,8 +417,9 @@ void AsynchIO::queueForDeletion() {
+ }
+ 
+ void AsynchIO::start(Poller::shared_ptr poller0) {
++    PollerHandle ph = PollerHandle(socket);
+     poller = poller0;
+-    poller->monitorHandle(PollerHandle(socket), Poller::INPUT);
++    poller->monitorHandle(ph, Poller::INPUT);
+     if (writeQueue.size() > 0)  // Already have data queued for write
+         notifyPendingWrite();
+     startReading();
+@@ -584,7 +592,7 @@ void AsynchIO::notifyIdle(void) {
+ void AsynchIO::startWrite(AsynchIO::BufferBase* buff) {
+     writeInProgress = true;
+     InterlockedIncrement(&opsInProgress);
+-    int writeCount = buff->byteCount-buff->dataCount;
++//    int writeCount = buff->byteCount-buff->dataCount;
+     AsynchWriteResult *result =
+         new AsynchWriteResult(boost::bind(&AsynchIO::completion, this, _1),
+                               buff,
+Index: cpp/src/qpid/sys/windows/AsynchIoResult.h
+===================================================================
+--- cpp/src/qpid/sys/windows/AsynchIoResult.h.orig	2009-10-21 23:53:53.000000000 +0200
++++ cpp/src/qpid/sys/windows/AsynchIoResult.h	2010-12-03 16:36:41.075891514 +0100
+@@ -98,7 +98,7 @@ private:
+     // AcceptEx needs a place to write the local and remote addresses
+     // when accepting the connection. Place those here; get enough for
+     // IPv6 addresses, even if the socket is IPv4.
+-    enum { SOCKADDRMAXLEN = sizeof sockaddr_in6 + 16,
++    enum { SOCKADDRMAXLEN = sizeof (sockaddr_in6) + 16,
+            SOCKADDRBUFLEN = 2 * SOCKADDRMAXLEN };
+     char addressBuffer[SOCKADDRBUFLEN];
+ };
+Index: cpp/src/qpid/sys/windows/IocpPoller.cpp
+===================================================================
+--- cpp/src/qpid/sys/windows/IocpPoller.cpp.orig	2010-06-01 20:59:52.000000000 +0200
++++ cpp/src/qpid/sys/windows/IocpPoller.cpp	2010-12-03 16:36:41.075891514 +0100
+@@ -152,9 +152,9 @@ void Poller::monitorHandle(PollerHandle&
+ }
+ 
+ // All no-ops...
+-void Poller::unmonitorHandle(PollerHandle& handle, Direction dir) {}
+-void Poller::registerHandle(PollerHandle& handle) {}
+-void Poller::unregisterHandle(PollerHandle& handle) {}
++void Poller::unmonitorHandle(PollerHandle& /*handle*/, Direction /*dir*/) {}
++void Poller::registerHandle(PollerHandle& /*handle*/) {}
++void Poller::unregisterHandle(PollerHandle& /*handle*/) {}
+ 
+ Poller::Event Poller::wait(Duration timeout) {
+     DWORD timeoutMs = 0;
+Index: cpp/src/qpid/sys/windows/Shlib.cpp
+===================================================================
+--- cpp/src/qpid/sys/windows/Shlib.cpp.orig	2008-10-22 01:29:47.000000000 +0200
++++ cpp/src/qpid/sys/windows/Shlib.cpp	2010-12-03 16:36:41.075891514 +0100
+@@ -44,7 +44,8 @@ void  Shlib::unload() {
+ }
+ 
+ void*  Shlib::getSymbol(const char* name) {
+-    void* sym = GetProcAddress(static_cast<HMODULE>(handle), name);
++    // Double cast avoids warning about casting function pointer to object
++    void *sym = reinterpret_cast<void*>(reinterpret_cast<intptr_t>(GetProcAddress(static_cast<HMODULE>(handle), name)));
+     if (sym == NULL)
+         throw QPID_WINDOWS_ERROR(GetLastError());
+     return sym;
+Index: cpp/src/qpid/sys/windows/Socket.cpp
+===================================================================
+--- cpp/src/qpid/sys/windows/Socket.cpp.orig	2009-10-21 23:53:53.000000000 +0200
++++ cpp/src/qpid/sys/windows/Socket.cpp	2010-12-03 16:36:41.076893048 +0100
+@@ -19,6 +19,11 @@
+  *
+  */
+ 
++// Ensure we get all of winsock2.h
++#ifndef _WIN32_WINNT
++#define _WIN32_WINNT 0x0501
++#endif
++
+ #include "qpid/sys/Socket.h"
+ #include "qpid/sys/SocketAddress.h"
+ #include "qpid/sys/windows/IoHandlePrivate.h"
+Index: cpp/src/qpid/sys/windows/SocketAddress.cpp
+===================================================================
+--- cpp/src/qpid/sys/windows/SocketAddress.cpp.orig	2010-01-29 18:22:13.000000000 +0100
++++ cpp/src/qpid/sys/windows/SocketAddress.cpp	2010-12-03 16:36:41.074888444 +0100
+@@ -18,6 +18,10 @@
+  * under the License.
+  *
+  */
++// Ensure we get all of winsock2.h
++#ifndef _WIN32_WINNT
++#define _WIN32_WINNT 0x0501
++#endif
+ 
+ #include "qpid/sys/SocketAddress.h"
+ 
+Index: cpp/src/qpid/sys/windows/SslAsynchIO.cpp
+===================================================================
+--- cpp/src/qpid/sys/windows/SslAsynchIO.cpp.orig	2010-10-11 18:46:43.000000000 +0200
++++ cpp/src/qpid/sys/windows/SslAsynchIO.cpp	2010-12-03 16:36:41.074888444 +0100
+@@ -32,12 +32,30 @@
+ // security.h needs to see this to distinguish from kernel use.
+ #define SECURITY_WIN32
+ #include <security.h>
+-#include <Schnlsp.h>
++#include <schnlsp.h>
+ #undef SECURITY_WIN32
+ 
+ #include <queue>
+ #include <boost/bind.hpp>
+ 
++#ifndef _MSC_VER
++#define SEC_I_CONTEXT_EXPIRED 1 /* FIXME: Need to find the true value */
++
++/* Macros borrowed from 
++ *   http://github.com/mirrors/wine/blob/master/include/sspi.h
++ * under LGPL 2.1+
++ */
++#define SecInvalidateHandle(x) do { \
++ ((PSecHandle)(x))->dwLower = ((ULONG_PTR)((INT_PTR)-1)); \
++ ((PSecHandle)(x))->dwUpper = ((ULONG_PTR)((INT_PTR)-1)); \
++ } while (0)
++
++#define SecIsValidHandle(x) \
++ ((((PSecHandle)(x))->dwLower != ((ULONG_PTR)(INT_PTR)-1)) && \
++ (((PSecHandle)(x))->dwUpper != ((ULONG_PTR)(INT_PTR)-1)))
++
++#endif
++
+ namespace {
+ 
+     /*
+@@ -166,7 +184,7 @@ void SslAsynchIO::queueWrite(AsynchIO::B
+     buffDesc.ulVersion = SECBUFFER_VERSION;
+     buffDesc.cBuffers = 4;
+     buffDesc.pBuffers = buffs;
+-    SECURITY_STATUS status = ::EncryptMessage(&ctxtHandle, 0, &buffDesc, 0);
++    ::EncryptMessage(&ctxtHandle, 0, &buffDesc, 0);
+ 
+     // EncryptMessage encrypts the data in place. The header and trailer
+     // areas were left previously and must now be included in the updated
+Index: cpp/src/qpid/sys/windows/SslAsynchIO.h
+===================================================================
+--- cpp/src/qpid/sys/windows/SslAsynchIO.h.orig	2010-10-11 18:46:43.000000000 +0200
++++ cpp/src/qpid/sys/windows/SslAsynchIO.h	2010-12-03 16:36:41.075891514 +0100
+@@ -32,7 +32,7 @@
+ // security.h needs to see this to distinguish from kernel use.
+ #define SECURITY_WIN32
+ #include <security.h>
+-#include <Schnlsp.h>
++#include <schnlsp.h>
+ #undef SECURITY_WIN32
+ 
+ namespace qpid {
+Index: cpp/src/qpid/sys/windows/StrError.cpp
+===================================================================
+--- cpp/src/qpid/sys/windows/StrError.cpp.orig	2008-10-03 21:12:52.000000000 +0200
++++ cpp/src/qpid/sys/windows/StrError.cpp	2010-12-03 16:36:41.076893048 +0100
+@@ -39,7 +39,11 @@ std::string strError(int err) {
+                             bufsize,
+                             0))
+     {
++#ifdef _MSC_VER
+         strerror_s (buf, bufsize, err);
++#else	
++	return std::string(strerror(err));
++#endif
+     }
+     return std::string(buf);
+ }
+Index: cpp/src/qpid/sys/windows/Time.cpp
+===================================================================
+--- cpp/src/qpid/sys/windows/Time.cpp.orig	2010-04-23 05:59:52.000000000 +0200
++++ cpp/src/qpid/sys/windows/Time.cpp	2010-12-03 16:36:41.074888444 +0100
+@@ -91,7 +91,11 @@ void outputFormattedNow(std::ostream& o)
+     char time_string[100];
+ 
+     ::time( &rawtime );
++#ifdef _MSC_VER
+     ::localtime_s(&timeinfo, &rawtime);
++#else	
++    timeinfo = *(::localtime(&rawtime));
++#endif
+     ::strftime(time_string, 100,
+                "%Y-%m-%d %H:%M:%S",
+                &timeinfo);
+Index: cpp/src/qpid/sys/windows/uuid.cpp
+===================================================================
+--- cpp/src/qpid/sys/windows/uuid.cpp.orig	2010-01-18 23:40:15.000000000 +0100
++++ cpp/src/qpid/sys/windows/uuid.cpp	2010-12-03 16:36:41.075891514 +0100
+@@ -19,7 +19,7 @@
+  *
+  */
+ 
+-#include <Rpc.h>
++#include <rpc.h>
+ #ifdef uuid_t   /*  Done in rpcdce.h */
+ #  undef uuid_t
+ #endif
+@@ -52,7 +52,11 @@ int uuid_parse (const char *in, uuid_t u
+ void uuid_unparse (const uuid_t uu, char *out) {
+     unsigned char *formatted;
+     if (UuidToString((UUID*)uu, &formatted) == RPC_S_OK) {
++#ifdef _MSC_VER
+         strncpy_s (out, 36+1, (char*)formatted, _TRUNCATE);
++#else	
++        strncpy (out, (char*)formatted, 36+1);
++#endif
+         RpcStringFree(&formatted);
+     }
+ }
+Index: cpp/src/ssl.cmake
+===================================================================
+--- cpp/src/ssl.cmake.orig	2010-01-23 01:16:34.000000000 +0100
++++ cpp/src/ssl.cmake	2010-12-03 16:36:41.070892086 +0100
+@@ -46,8 +46,8 @@ if (BUILD_SSL)
+     set (sslcommon_windows_SOURCES
+          qpid/sys/windows/SslAsynchIO.cpp
+         )
+-    set (windows_ssl_libs Secur32.lib)
+-    set (windows_ssl_server_libs Crypt32.lib)
++    set (windows_ssl_libs secur32.lib)
++    set (windows_ssl_server_libs crypt32.lib)
+   else (CMAKE_SYSTEM_NAME STREQUAL Windows)
+ 
+     if (NOT NSS_FOUND)
+Index: cpp/src/tests/TimerTest.cpp
+===================================================================
+--- cpp/src/tests/TimerTest.cpp.orig	2010-08-26 23:12:54.000000000 +0200
++++ cpp/src/tests/TimerTest.cpp	2010-12-03 16:36:41.078011078 +0100
+@@ -77,8 +77,10 @@ class TestTask : public TimerTask
+         BOOST_CHECK(fired);
+         BOOST_CHECK_EQUAL(expected_position, position);
+         Duration actual(start, end);
+-#ifdef _WIN32
++#ifdef _MSC_VER
+         uint64_t difference = _abs64(expected - actual);
++#elif defined (_WIN32)	
++        uint64_t difference = labs(expected - actual);
+ #else
+         uint64_t difference = abs(expected - actual);
+ #endif
+Index: cpp/src/tests/windows/DisableWin32ErrorWindows.cpp
+===================================================================
+--- cpp/src/tests/windows/DisableWin32ErrorWindows.cpp.orig	2009-10-06 01:19:53.000000000 +0200
++++ cpp/src/tests/windows/DisableWin32ErrorWindows.cpp	2010-12-03 16:36:41.078011078 +0100
+@@ -26,7 +26,9 @@
+ // include this file with the executable being built. If the default
+ // behaviors are desired, don't include this file in the build.
+ 
++#if defined(_MSC_VER)
+ #include <crtdbg.h>
++#endif
+ #include <windows.h>
+ #include <iostream>
+ 
+@@ -53,12 +55,14 @@ static redirect_errors_to_stderr block;
+ 
+ redirect_errors_to_stderr::redirect_errors_to_stderr()
+ {
++#if defined(_MSC_VER)
+     _CrtSetReportMode (_CRT_WARN, _CRTDBG_MODE_FILE);
+     _CrtSetReportFile (_CRT_WARN, _CRTDBG_FILE_STDERR);
+     _CrtSetReportMode (_CRT_ERROR, _CRTDBG_MODE_FILE);
+     _CrtSetReportFile (_CRT_ERROR, _CRTDBG_FILE_STDERR);
+     _CrtSetReportMode (_CRT_ASSERT, _CRTDBG_MODE_FILE);
+     _CrtSetReportFile (_CRT_ASSERT, _CRTDBG_FILE_STDERR);
++#endif
+ 
+     // Prevent the system from displaying the critical-error-handler
+     // and can't-open-file message boxes.
+Index: cpp/src/windows/QpiddBroker.cpp
+===================================================================
+--- cpp/src/windows/QpiddBroker.cpp.orig	2010-01-27 23:06:52.000000000 +0100
++++ cpp/src/windows/QpiddBroker.cpp	2010-12-03 16:36:41.070892086 +0100
+@@ -155,7 +155,7 @@ NamedSharedMemory<T>::NamedSharedMemory(
+     name(n),
+     memory(NULL),
+     data(0)
+-{};
++{}
+ 
+ template <typename T>
+ NamedSharedMemory<T>::~NamedSharedMemory() {
+@@ -163,7 +163,7 @@ NamedSharedMemory<T>::~NamedSharedMemory
+         ::UnmapViewOfFile(data);
+     if (memory != NULL)
+         ::CloseHandle(memory);
+-};
++}
+ 
+ template <typename T>
+ T& NamedSharedMemory<T>::create() {
diff --git a/sources b/sources
index e69de29..6ff2d81 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+0184fef44ae9ca859bb4ef9ee22d5e1c  qpid-0.8.tar.gz


More information about the scm-commits mailing list