You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by jb...@apache.org on 2018/04/04 15:18:51 UTC

[geode-native] branch develop updated: GEODE-4916: Fixes compilation errors when including in empty VC++ project. (#258)

This is an automated email from the ASF dual-hosted git repository.

jbarrett pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode-native.git


The following commit(s) were added to refs/heads/develop by this push:
     new 19165e2  GEODE-4916: Fixes compilation errors when including in empty VC++ project. (#258)
19165e2 is described below

commit 19165e2e8cc5c479417780346ce0c43bd3f30c38
Author: Jacob Barrett <jb...@pivotal.io>
AuthorDate: Wed Apr 4 08:18:49 2018 -0700

    GEODE-4916: Fixes compilation errors when including in empty VC++ project. (#258)
    
    - Convert to CMake GenerateExportHeader.
    - Generates platform specfic export files.
    - Remove use of sprintf which caused error on Windows.
    - Fixes explicit instantiation export attributes.
    - Fixes default visibility.
---
 CMakeLists.txt                                     |   2 +-
 clicache/test/CMakeLists.txt                       |  15 ++-
 cppcache/CMakeLists.txt                            |  12 +-
 cppcache/include/geode/AttributesMutator.hpp       |   2 +-
 cppcache/include/geode/AuthInitialize.hpp          |   2 +-
 cppcache/include/geode/AuthenticatedView.hpp       |   2 +-
 cppcache/include/geode/Cache.hpp                   |   2 +-
 cppcache/include/geode/CacheAttributes.hpp         |   2 +-
 cppcache/include/geode/CacheFactory.hpp            |   2 +-
 cppcache/include/geode/CacheListener.hpp           |   2 +-
 cppcache/include/geode/CacheLoader.hpp             |   2 +-
 cppcache/include/geode/CacheStatistics.hpp         |   2 +-
 cppcache/include/geode/CacheTransactionManager.hpp |   2 +-
 cppcache/include/geode/CacheWriter.hpp             |   2 +-
 cppcache/include/geode/CacheableBuiltins.hpp       |  67 ++++++-----
 cppcache/include/geode/CacheableDate.hpp           |   2 +-
 cppcache/include/geode/CacheableEnum.hpp           |   2 +-
 cppcache/include/geode/CacheableFileName.hpp       |   2 +-
 cppcache/include/geode/CacheableKey.hpp            |   2 +-
 cppcache/include/geode/CacheableObjectArray.hpp    |   2 +-
 cppcache/include/geode/CacheableString.hpp         |   2 +-
 cppcache/include/geode/CacheableUndefined.hpp      |   2 +-
 cppcache/include/geode/CqAttributes.hpp            |   2 +-
 cppcache/include/geode/CqAttributesFactory.hpp     |   2 +-
 cppcache/include/geode/CqAttributesMutator.hpp     |   2 +-
 cppcache/include/geode/CqEvent.hpp                 |   2 +-
 cppcache/include/geode/CqListener.hpp              |   2 +-
 cppcache/include/geode/CqQuery.hpp                 |   2 +-
 cppcache/include/geode/CqResults.hpp               |   2 +-
 cppcache/include/geode/CqServiceStatistics.hpp     |   2 +-
 cppcache/include/geode/CqStatistics.hpp            |   2 +-
 cppcache/include/geode/CqStatusListener.hpp        |   2 +-
 cppcache/include/geode/DataInput.hpp               |   2 +-
 cppcache/include/geode/DataOutput.hpp              |   2 +-
 cppcache/include/geode/DefaultResultCollector.hpp  |   2 +-
 cppcache/include/geode/Delta.hpp                   |   2 +-
 cppcache/include/geode/DistributedSystem.hpp       |   2 +-
 cppcache/include/geode/EntryEvent.hpp              |   2 +-
 cppcache/include/geode/Exception.hpp               |   2 +-
 cppcache/include/geode/ExceptionTypes.hpp          | 128 ++++++++++-----------
 cppcache/include/geode/Execution.hpp               |   2 +-
 cppcache/include/geode/ExpirationAttributes.hpp    |   2 +-
 cppcache/include/geode/FixedPartitionResolver.hpp  |   2 +-
 cppcache/include/geode/FunctionService.hpp         |   2 +-
 cppcache/include/geode/GeodeCache.hpp              |   2 +-
 cppcache/include/geode/PartitionResolver.hpp       |   2 +-
 cppcache/include/geode/PdxInstance.hpp             |   2 +-
 cppcache/include/geode/PdxInstanceFactory.hpp      |   2 +-
 cppcache/include/geode/PdxReader.hpp               |   2 +-
 cppcache/include/geode/PdxSerializable.hpp         |   2 +-
 cppcache/include/geode/PdxSerializer.hpp           |   2 +-
 cppcache/include/geode/PdxUnreadFields.hpp         |   2 +-
 cppcache/include/geode/PdxWrapper.hpp              |   2 +-
 cppcache/include/geode/PdxWriter.hpp               |   2 +-
 cppcache/include/geode/PersistenceManager.hpp      |   2 +-
 cppcache/include/geode/Pool.hpp                    |   2 +-
 cppcache/include/geode/PoolFactory.hpp             |   2 +-
 cppcache/include/geode/PoolManager.hpp             |   2 +-
 cppcache/include/geode/Properties.hpp              |   2 +-
 cppcache/include/geode/Query.hpp                   |   2 +-
 cppcache/include/geode/QueryService.hpp            |   2 +-
 cppcache/include/geode/Region.hpp                  |   2 +-
 cppcache/include/geode/RegionAttributes.hpp        |   2 +-
 cppcache/include/geode/RegionAttributesFactory.hpp |   2 +-
 cppcache/include/geode/RegionEntry.hpp             |   2 +-
 cppcache/include/geode/RegionEvent.hpp             |   2 +-
 cppcache/include/geode/RegionFactory.hpp           |   2 +-
 cppcache/include/geode/RegionService.hpp           |   2 +-
 cppcache/include/geode/ResultCollector.hpp         |   2 +-
 cppcache/include/geode/ResultSet.hpp               |   2 +-
 cppcache/include/geode/SelectResults.hpp           |   2 +-
 cppcache/include/geode/SelectResultsIterator.hpp   |   2 +-
 cppcache/include/geode/Serializable.hpp            |   2 +-
 cppcache/include/geode/Struct.hpp                  |   2 +-
 cppcache/include/geode/StructSet.hpp               |   2 +-
 cppcache/include/geode/SystemProperties.hpp        |   2 +-
 cppcache/include/geode/TransactionId.hpp           |   2 +-
 cppcache/include/geode/TypeRegistry.hpp            |   2 +-
 .../geode/UserFunctionExecutionException.hpp       |   2 +-
 cppcache/include/geode/WritablePdxInstance.hpp     |   2 +-
 cppcache/include/geode/internal/CacheableKeys.hpp  |  12 +-
 cppcache/include/geode/internal/geode_base.hpp     |  31 +----
 cppcache/shared/CMakeLists.txt                     |  27 +++--
 cppcache/src/Assert.hpp                            |   2 +-
 cppcache/src/CacheConfig.hpp                       |   2 +-
 cppcache/src/CacheImpl.hpp                         |   2 +-
 cppcache/src/CachePerfStats.hpp                    |   2 +-
 cppcache/src/CacheRegionHelper.hpp                 |   2 +-
 cppcache/src/CacheXml.hpp                          |   2 +-
 cppcache/src/CacheXmlCreation.hpp                  |   2 +-
 cppcache/src/CacheXmlParser.hpp                    |   2 +-
 cppcache/src/CacheableBuiltins.cpp                 |  26 ++---
 cppcache/src/CacheableToken.hpp                    |   4 +-
 cppcache/src/ClientMetadata.hpp                    |   2 +-
 cppcache/src/ConcurrentEntriesMap.hpp              |   2 +-
 cppcache/src/Condition.hpp                         |   2 +-
 cppcache/src/ConnectCounter.hpp                    |   2 +-
 cppcache/src/CppCacheLibrary.hpp                   |   2 +-
 cppcache/src/CqAttributesImpl.hpp                  |   2 +-
 cppcache/src/CqAttributesMutatorImpl.hpp           |   2 +-
 cppcache/src/CqQueryVsdStats.hpp                   |   2 +-
 cppcache/src/CqService.hpp                         |   2 +-
 cppcache/src/CqServiceVsdStats.hpp                 |   2 +-
 cppcache/src/DataInput.cpp                         |  15 ++-
 cppcache/src/DataOutput.cpp                        |  20 ++--
 cppcache/src/DistributedSystemImpl.hpp             |   2 +-
 cppcache/src/EntriesMap.hpp                        |   2 +-
 cppcache/src/EntriesMapFactory.hpp                 |   2 +-
 cppcache/src/EntryExpiryHandler.hpp                |   2 +-
 cppcache/src/EnumInfo.hpp                          |   2 +-
 cppcache/src/EventId.hpp                           |   2 +-
 cppcache/src/EventIdMap.hpp                        |   4 +-
 cppcache/src/EventSource.hpp                       |   2 +-
 cppcache/src/EvictionController.hpp                |   2 +-
 cppcache/src/EvictionThread.hpp                    |   2 +-
 cppcache/src/ExpMapEntry.hpp                       |   6 +-
 cppcache/src/ExpiryHandler_T.hpp                   |   2 +-
 cppcache/src/ExpiryTaskManager.hpp                 |   5 +-
 cppcache/src/FunctionServiceImpl.hpp               |   2 +-
 cppcache/src/IntQueue.hpp                          |   2 +-
 cppcache/src/InterestResultPolicy.hpp              |   2 +-
 .../src/InternalCacheTransactionManager2PC.hpp     |   2 +-
 cppcache/src/LRUAction.hpp                         |   8 +-
 cppcache/src/LRUEntriesMap.cpp                     |   2 +-
 cppcache/src/LRUEntriesMap.hpp                     |   2 +-
 cppcache/src/LRUExpMapEntry.hpp                    |   6 +-
 cppcache/src/LRUList.hpp                           |   2 +-
 cppcache/src/LRULocalDestroyAction.hpp             |   2 +-
 cppcache/src/LRUMapEntry.hpp                       |   6 +-
 cppcache/src/LocalRegion.hpp                       |   2 +-
 cppcache/src/MapEntry.hpp                          |  14 +--
 cppcache/src/MapSegment.hpp                        |   2 +-
 cppcache/src/NoResult.hpp                          |   2 +-
 cppcache/src/NonCopyable.hpp                       |   4 +-
 cppcache/src/PdxFieldType.hpp                      |   2 +-
 cppcache/src/PdxInstanceFactoryImpl.hpp            |   2 +-
 cppcache/src/PdxInstanceImpl.hpp                   |   2 +-
 cppcache/src/PdxTypeRegistry.hpp                   |   2 +-
 cppcache/src/PoolXmlCreation.hpp                   |   2 +-
 cppcache/src/PreservedDataExpiryHandler.hpp        |   2 +-
 cppcache/src/ProxyRegion.hpp                       |   2 +-
 cppcache/src/ProxyRemoteQueryService.hpp           |   2 +-
 .../src/PutAllPartialResultServerException.hpp     |   2 +-
 cppcache/src/Queue.hpp                             |   2 +-
 cppcache/src/ReadWriteLock.hpp                     |   2 +-
 cppcache/src/RegionConfig.hpp                      |   2 +-
 cppcache/src/RegionExpiryHandler.hpp               |   2 +-
 cppcache/src/RegionGlobalLocks.hpp                 |   2 +-
 cppcache/src/RegionStats.hpp                       |   2 +-
 cppcache/src/RegionXmlCreation.hpp                 |   2 +-
 cppcache/src/RemoteQuery.hpp                       |   2 +-
 cppcache/src/RemoteQueryService.hpp                |   2 +-
 cppcache/src/ResultSetImpl.hpp                     |   2 +-
 cppcache/src/SerializationRegistry.hpp             |   2 +-
 cppcache/src/ServerLocation.hpp                    |   2 +-
 cppcache/src/Set.hpp                               |   2 +-
 cppcache/src/StructSetImpl.hpp                     |   2 +-
 cppcache/src/SuspendedTxExpiryHandler.hpp          |   2 +-
 cppcache/src/TableOfPrimes.hpp                     |   2 +-
 cppcache/src/Task.hpp                              |   2 +-
 cppcache/src/TcpConn.hpp                           |   2 +-
 cppcache/src/TcrConnection.hpp                     |   2 +-
 cppcache/src/TcrConnectionManager.hpp              |   2 +-
 cppcache/src/TcrDistributionManager.hpp            |   2 +-
 cppcache/src/TcrEndpoint.hpp                       |   2 +-
 cppcache/src/TcrHADistributionManager.hpp          |   2 +-
 cppcache/src/TcrMessage.hpp                        |   2 +-
 .../src/ThinClientCacheDistributionManager.hpp     |   2 +-
 cppcache/src/ThinClientHARegion.hpp                |   2 +-
 cppcache/src/ThinClientRegion.hpp                  |   2 +-
 cppcache/src/TimeoutTimer.hpp                      |   2 +-
 cppcache/src/TombstoneExpiryHandler.hpp            |   2 +-
 cppcache/src/UserAttributes.hpp                    |   2 +-
 cppcache/src/Utils.hpp                             |   2 +-
 cppcache/src/VersionStamp.hpp                      |   2 +-
 cppcache/src/dllmain.cpp                           |   2 +-
 cppcache/src/statistics/HostStatSampler.hpp        |   2 +-
 cppcache/src/statistics/PoolStatsSampler.hpp       |   2 +-
 cppcache/src/statistics/ProcessStats.hpp           |   2 +-
 cppcache/src/statistics/StatArchiveWriter.hpp      |   8 +-
 cppcache/src/statistics/StatSamplerStats.hpp       |   2 +-
 cppcache/src/statistics/StatisticDescriptor.hpp    |   2 +-
 cppcache/src/statistics/Statistics.hpp             |   2 +-
 cppcache/src/statistics/StatisticsFactory.hpp      |   2 +-
 cppcache/src/statistics/StatisticsType.hpp         |   2 +-
 cppcache/src/util/Log.hpp                          |   4 +-
 cppcache/src/util/exception.hpp                    |   2 +-
 cppcache/static/CMakeLists.txt                     |  14 ++-
 cryptoimpl/CMakeLists.txt                          |  22 +++-
 cryptoimpl/DHImpl.hpp                              |  39 ++++---
 cryptoimpl/SSLImpl.hpp                             |  11 +-
 dhimpl/CMakeLists.txt                              |  11 +-
 dhimpl/DHImpl.hpp                                  |  16 +--
 sqliteimpl/CMakeLists.txt                          |   7 ++
 sqliteimpl/SqLiteImpl.cpp                          |   3 +-
 templates/security/CMakeLists.txt                  |   7 ++
 templates/security/CMakeLists.txt.forInstall       |   9 +-
 templates/security/PkcsAuthInit.cpp                |  55 ++++-----
 templates/security/UserPasswordAuthInit.cpp        |   3 +-
 tests/cli/PkcsWrapper/CMakeLists.txt               |  13 ++-
 tests/cli/QueryHelper/CMakeLists.txt               |  17 +--
 tests/cpp/security/CMakeLists.txt                  |  13 ++-
 tests/cpp/security/PkcsAuthInit.cpp                |   3 +-
 tests/cpp/testobject/ArrayOfByte.hpp               |  23 ++--
 tests/cpp/testobject/BatchObject.hpp               |  10 +-
 tests/cpp/testobject/CMakeLists.txt                |  24 ++--
 tests/cpp/testobject/DeltaFastAssetAccount.hpp     |  10 +-
 tests/cpp/testobject/DeltaPSTObject.hpp            |  10 +-
 tests/cpp/testobject/DeltaTestImpl.hpp             |  10 +-
 tests/cpp/testobject/DeltaTestObj.hpp              |  10 +-
 tests/cpp/testobject/EqStruct.hpp                  |  10 +-
 tests/cpp/testobject/FastAsset.hpp                 |  10 +-
 tests/cpp/testobject/FastAssetAccount.hpp          |  10 +-
 tests/cpp/testobject/InvalidPdxUsage.hpp           |  10 +-
 tests/cpp/testobject/NestedPdxObject.hpp           |  10 +-
 tests/cpp/testobject/NonPdxType.hpp                |  10 +-
 tests/cpp/testobject/NoopAuthInit.cpp              |   4 +-
 tests/cpp/testobject/PSTObject.hpp                 |  10 +-
 tests/cpp/testobject/PdxClassV1.hpp                |  10 +-
 tests/cpp/testobject/PdxClassV2.hpp                |  10 +-
 tests/cpp/testobject/PdxType.hpp                   |  10 +-
 tests/cpp/testobject/PdxVersioned1.hpp             |  10 +-
 tests/cpp/testobject/PdxVersioned2.hpp             |  10 +-
 tests/cpp/testobject/Position.hpp                  |  10 +-
 tests/cpp/testobject/PositionPdx.hpp               |  10 +-
 tests/cpp/testobject/TestObject1.hpp               |  14 +--
 tests/cpp/testobject/TimestampedObject.hpp         |  10 +-
 tests/cpp/testobject/VariousPdxTypes.hpp           |  10 +-
 228 files changed, 572 insertions(+), 700 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b283195..3431bcf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -260,7 +260,6 @@ add_subdirectory(cppcache)
 add_subdirectory(cryptoimpl)
 add_subdirectory(dhimpl)
 add_subdirectory(sqliteimpl)
-add_subdirectory(tests)
 add_subdirectory(templates/security)
 add_subdirectory(docs/api)
 add_subdirectory(examples)
@@ -268,6 +267,7 @@ if (${BUILD_CLI})
   add_subdirectory(clicache)
   add_subdirectory(plugins/SQLiteCLI)
 endif()
+add_subdirectory(tests)
 
 install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/xsds/ DESTINATION xsds)
 install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/defaultSystem/ DESTINATION defaultSystem)
diff --git a/clicache/test/CMakeLists.txt b/clicache/test/CMakeLists.txt
index 21b819a..ef6d71c 100644
--- a/clicache/test/CMakeLists.txt
+++ b/clicache/test/CMakeLists.txt
@@ -23,7 +23,7 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/AssemblyInfo.cpp.in ${CMAKE_CURRENT_B
 list(APPEND CONFIGURE_IN_FILES ${CMAKE_CURRENT_SOURCE_DIR}/AssemblyInfo.cpp.in)
 list(APPEND CONFIGURE_OUT_FILES ${CMAKE_CURRENT_BINARY_DIR}/AssemblyInfo.cpp)
 
-add_library(${PROJECT_NAME} MODULE
+add_library(Apache.Geode.Test MODULE
   AssemblyInfo.cpp.in
   native_conditional_unqiue_ptrTests.cpp
   native_shared_ptrTests.cpp
@@ -32,32 +32,35 @@ add_library(${PROJECT_NAME} MODULE
   ${CONFIGURE_OUT_FILES}
 )
 
-set_target_properties(${PROJECT_NAME} PROPERTIES
+set_target_properties(Apache.Geode.Test PROPERTIES
   VS_GLOBAL_CLRSupport "true"
   VS_GLOBAL_KEYWORD "ManagedCProj"
   VS_GLOBAL_TestProjectType UnitTest
   VS_GLOBAL_PROJECT_TYPES "{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"
-  VS_GLOBAL_ROOTNAMESPACE ${PROJECT_NAME}
+  VS_GLOBAL_ROOTNAMESPACE Apache.Geode.Test
   VS_DOTNET_TARGET_FRAMEWORK_VERSION "v4.5.2"
   VS_DOTNET_REFERENCES "System;System.Xml;Microsoft.VisualStudio.QualityTools.UnitTestFramework"
 )
 
-target_include_directories(${PROJECT_NAME}
+target_include_directories(Apache.Geode.Test
   PRIVATE
   	$<TARGET_PROPERTY:apache-geode,SOURCE_DIR>
   	$<TARGET_PROPERTY:apache-geode,INCLUDE_DIRECTORIES>
   	$<TARGET_PROPERTY:Apache.Geode,SOURCE_DIR>
 )
 
-target_link_libraries(${PROJECT_NAME}
+target_link_libraries(Apache.Geode.Test
   PUBLIC
-    Apache.Geode
+    # Apache.Geode #- Causes include of .lib
   PRIVATE
     c++cli
 	c++11
 	_WarningsAsError
 )
 
+# Makes project only reference, no .lib.
+add_dependencies(Apache.Geode.Test Apache.Geode)
+
 string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${SHARED_LINKER_FLAGS_STRONG_KEY}")
 
diff --git a/cppcache/CMakeLists.txt b/cppcache/CMakeLists.txt
index e429914..648b653 100644
--- a/cppcache/CMakeLists.txt
+++ b/cppcache/CMakeLists.txt
@@ -59,6 +59,9 @@ list(APPEND CONFIGURE_IN_FILES ${COMMON_SOURCE_DIR}/config.h.in)
 list(APPEND CONFIGURE_OUT_FILES ${CMAKE_CURRENT_BINARY_DIR}/config.h)
 configure_file(${COMMON_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
 
+set(EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/apache-geode_export.h)
+list(APPEND CONFIGURE_OUT_FILES ${EXPORT_FILE_NAME})
+
 set_source_files_properties(${CONFIGURE_OUT_FILES} PROPERTIES GENERATED TRUE)
 
 set(SOURCES_ALL ${SOURCES} ${PRIVATE_HEADERS} ${PUBLIC_HEADERS} ${CONFIGURE_IN_FILES} ${CONFIGURE_OUT_FILES})
@@ -86,11 +89,6 @@ target_link_libraries(_apache-geode INTERFACE
   libxml2
 )
 
-target_compile_definitions(_apache-geode INTERFACE
-  # TODO replace BUILD_CPPCACHE with built-in _DLL
-  $<BUILD_INTERFACE:BUILD_CPPCACHE>
-)
-
 if (USE_PCH)
   # TODO figure out why PCH causes these warnings
   # Ignore warnings resulting from using PCH
@@ -107,6 +105,10 @@ target_include_directories(_apache-geode INTERFACE
 add_dependencies(_apache-geode version-header)
 
 install(DIRECTORY ${COMMON_INCLUDE_DIR} DESTINATION .)
+install(FILES
+ ${EXPORT_FILE_NAME}
+ DESTINATION include/geode/internal
+)
 
 add_subdirectory(shared)
 add_subdirectory(static)
diff --git a/cppcache/include/geode/AttributesMutator.hpp b/cppcache/include/geode/AttributesMutator.hpp
index 61d9994..d034769 100644
--- a/cppcache/include/geode/AttributesMutator.hpp
+++ b/cppcache/include/geode/AttributesMutator.hpp
@@ -58,7 +58,7 @@ class Region;
  * @see RegionAttributes
  * @see RegionAttributesFactory
  */
-class _GEODE_EXPORT AttributesMutator {
+class APACHE_GEODE_EXPORT AttributesMutator {
  private:
   std::shared_ptr<Region> m_region;
 
diff --git a/cppcache/include/geode/AuthInitialize.hpp b/cppcache/include/geode/AuthInitialize.hpp
index 0c4759e..a46c238 100644
--- a/cppcache/include/geode/AuthInitialize.hpp
+++ b/cppcache/include/geode/AuthInitialize.hpp
@@ -46,7 +46,7 @@ class Properties;
  * AuthInitialize object) as the <code>security-client-auth-factory</code>
  * system property.
  */
-class _GEODE_EXPORT AuthInitialize {
+class APACHE_GEODE_EXPORT AuthInitialize {
  public:
   /**@brief initialize with the given set of security properties
    * and return the credentials for the client as properties.
diff --git a/cppcache/include/geode/AuthenticatedView.hpp b/cppcache/include/geode/AuthenticatedView.hpp
index 91cdd88..44f5c2d 100644
--- a/cppcache/include/geode/AuthenticatedView.hpp
+++ b/cppcache/include/geode/AuthenticatedView.hpp
@@ -53,7 +53,7 @@ class FunctionServiceImpl;
  * <p>A cache can have multiple root regions, each with a different name.
  *
  */
-class _GEODE_EXPORT AuthenticatedView : public RegionService {
+class APACHE_GEODE_EXPORT AuthenticatedView : public RegionService {
   /**
    * @brief public methods
    */
diff --git a/cppcache/include/geode/Cache.hpp b/cppcache/include/geode/Cache.hpp
index 6c6b21c..bd8ff4c 100644
--- a/cppcache/include/geode/Cache.hpp
+++ b/cppcache/include/geode/Cache.hpp
@@ -63,7 +63,7 @@ class AuthenticatedView;
  * <p>A cache can have multiple root regions, each with a different name.
  *
  */
-class _GEODE_EXPORT Cache : public GeodeCache {
+class APACHE_GEODE_EXPORT Cache : public GeodeCache {
   /**
    * @brief public methods
    */
diff --git a/cppcache/include/geode/CacheAttributes.hpp b/cppcache/include/geode/CacheAttributes.hpp
index 721ad47..90f87aa 100644
--- a/cppcache/include/geode/CacheAttributes.hpp
+++ b/cppcache/include/geode/CacheAttributes.hpp
@@ -52,7 +52,7 @@ namespace client {
  */
 class CacheAttributesFactory;
 
-class _GEODE_EXPORT CacheAttributes {
+class APACHE_GEODE_EXPORT CacheAttributes {
   /**
    * @brief public static methods
    */
diff --git a/cppcache/include/geode/CacheFactory.hpp b/cppcache/include/geode/CacheFactory.hpp
index a6aea19..dc60e3f 100644
--- a/cppcache/include/geode/CacheFactory.hpp
+++ b/cppcache/include/geode/CacheFactory.hpp
@@ -47,7 +47,7 @@ class AuthInitialize;
  * For the default values for the pool attributes see {@link PoolFactory}.
  * To create additional {@link Pool}s see {@link PoolManager}
  */
-class _GEODE_EXPORT CacheFactory {
+class APACHE_GEODE_EXPORT CacheFactory {
  public:
   /**
    * To create the instance of {@link CacheFactory}
diff --git a/cppcache/include/geode/CacheListener.hpp b/cppcache/include/geode/CacheListener.hpp
index 244343b..bee097d 100644
--- a/cppcache/include/geode/CacheListener.hpp
+++ b/cppcache/include/geode/CacheListener.hpp
@@ -76,7 +76,7 @@ class RegionEvent;
  * @see RegionAttributes::getCacheListener
  * @see CacheListenerException
  */
-class _GEODE_EXPORT CacheListener {
+class APACHE_GEODE_EXPORT CacheListener {
   /**
    * @brief public methods
    */
diff --git a/cppcache/include/geode/CacheLoader.hpp b/cppcache/include/geode/CacheLoader.hpp
index df7b701..7c533e5 100644
--- a/cppcache/include/geode/CacheLoader.hpp
+++ b/cppcache/include/geode/CacheLoader.hpp
@@ -52,7 +52,7 @@ class Region;
  * @see RegionAttributesFactory::setCacheLoader
  * @see RegionAttributes::getCacheLoader
  */
-class _GEODE_EXPORT CacheLoader {
+class APACHE_GEODE_EXPORT CacheLoader {
  public:
   /**Loads a value. Application writers should implement this
    * method to customize the loading of a value. This method is called
diff --git a/cppcache/include/geode/CacheStatistics.hpp b/cppcache/include/geode/CacheStatistics.hpp
index 40129ae..8bd9911 100644
--- a/cppcache/include/geode/CacheStatistics.hpp
+++ b/cppcache/include/geode/CacheStatistics.hpp
@@ -45,7 +45,7 @@ class LocalRegion;
  *@see Region::getStatistics
  *@see RegionEntry::getStatistics
  */
-class _GEODE_EXPORT CacheStatistics {
+class APACHE_GEODE_EXPORT CacheStatistics {
  public:
   typedef std::chrono::system_clock::time_point time_point;
 
diff --git a/cppcache/include/geode/CacheTransactionManager.hpp b/cppcache/include/geode/CacheTransactionManager.hpp
index 3b859a1..7faf138 100644
--- a/cppcache/include/geode/CacheTransactionManager.hpp
+++ b/cppcache/include/geode/CacheTransactionManager.hpp
@@ -31,7 +31,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT CacheTransactionManager {
+class APACHE_GEODE_EXPORT CacheTransactionManager {
  public:
   /** Creates a new transaction and associates it with the current thread.
    *
diff --git a/cppcache/include/geode/CacheWriter.hpp b/cppcache/include/geode/CacheWriter.hpp
index 1d27fa5..c9e1496 100644
--- a/cppcache/include/geode/CacheWriter.hpp
+++ b/cppcache/include/geode/CacheWriter.hpp
@@ -84,7 +84,7 @@ class Region;
  * @see RegionAttributes::getCacheWriter
  * @see AttributesMutator::setCacheWriter
  */
-class _GEODE_EXPORT CacheWriter {
+class APACHE_GEODE_EXPORT CacheWriter {
  public:
   /**
    * Called before an entry is updated. The entry update is initiated by a
diff --git a/cppcache/include/geode/CacheableBuiltins.hpp b/cppcache/include/geode/CacheableBuiltins.hpp
index 26489e1..189feb8 100644
--- a/cppcache/include/geode/CacheableBuiltins.hpp
+++ b/cppcache/include/geode/CacheableBuiltins.hpp
@@ -38,9 +38,8 @@ namespace geode {
 namespace client {
 
 /** Template CacheableKey class for primitive types. */
-template <typename TObj, int8_t TYPEID, const char* TYPENAME,
-          const char* SPRINTFSYM, int32_t STRSIZE>
-class CacheableKeyType : public CacheableKey {
+template <typename TObj, int8_t TYPEID, const char* TYPENAME>
+class APACHE_GEODE_EXPORT CacheableKeyType : public CacheableKey {
  protected:
   TObj m_value;
 
@@ -83,9 +82,7 @@ class CacheableKeyType : public CacheableKey {
 
   /** Return a string representation of the object. */
   virtual std::string toString() const override {
-    char buffer[STRSIZE + 1];
-    std::sprintf(buffer, SPRINTFSYM, m_value);
-    return std::string(buffer);
+    return std::to_string(m_value);
   }
 
   // CacheableKey methods
@@ -143,7 +140,7 @@ inline void copyArray(std::shared_ptr<TObj>* dest,
 
 /** Template class for container Cacheable types. */
 template <typename TBase, int8_t TYPEID>
-class CacheableContainerType : public Cacheable, public TBase {
+class APACHE_GEODE_EXPORT CacheableContainerType : public Cacheable, public TBase {
  protected:
   inline CacheableContainerType() : TBase() {}
 
@@ -196,16 +193,15 @@ class CacheableContainerType : public Cacheable, public TBase {
 #pragma warning(disable : 4231)
 #endif
 
-#define _GEODE_CACHEABLE_KEY_TYPE_DEF_(p, k, sz)                     \
-  extern const char tName_##k[];                                     \
-  extern const char tStr_##k[];                                      \
-  template class _GEODE_EXPORT                                       \
-      CacheableKeyType<p, GeodeTypeIds::k, tName_##k, tStr_##k, sz>; \
-  typedef CacheableKeyType<p, GeodeTypeIds::k, tName_##k, tStr_##k, sz> _##k;
+#define _GEODE_CACHEABLE_KEY_TYPE_DEF_(p, k)           \
+  extern const char tName_##k[];                       \
+  template class                                       \
+      CacheableKeyType<p, GeodeTypeIds::k, tName_##k>; \
+  typedef CacheableKeyType<p, GeodeTypeIds::k, tName_##k> _##k;
 
 // use a class instead of typedef for bug #283
-#define _GEODE_CACHEABLE_KEY_TYPE_(p, k, sz)                            \
-  class _GEODE_EXPORT k : public _##k {                                 \
+#define _GEODE_CACHEABLE_KEY_TYPE_(p, k)                                \
+  class APACHE_GEODE_EXPORT k : public _##k {                           \
    protected:                                                           \
     inline k() : _##k() {}                                              \
     inline k(const p value) : _##k(value) {}                            \
@@ -234,13 +230,14 @@ class CacheableContainerType : public Cacheable, public TBase {
     return k::create(value);                                            \
   }
 
-#define _GEODE_CACHEABLE_CONTAINER_TYPE_DEF_(p, c)                         \
-  template class _GEODE_EXPORT CacheableContainerType<p, GeodeTypeIds::c>; \
+#define _GEODE_CACHEABLE_CONTAINER_TYPE_DEF_(p, c) \
+  template class                                   \
+      CacheableContainerType<p, GeodeTypeIds::c>;  \
   typedef CacheableContainerType<p, GeodeTypeIds::c> _##c;
 
 // use a class instead of typedef for bug #283
 #define _GEODE_CACHEABLE_CONTAINER_TYPE_(p, c)                         \
-  class _GEODE_EXPORT c : public _##c {                                \
+  class APACHE_GEODE_EXPORT c : public _##c {                          \
    protected:                                                          \
     inline c() : _##c() {}                                             \
     inline c(const int32_t n) : _##c(n) {}                             \
@@ -264,66 +261,66 @@ class CacheableContainerType : public Cacheable, public TBase {
 
 // Instantiations for the built-in CacheableKeys
 
-_GEODE_CACHEABLE_KEY_TYPE_DEF_(bool, CacheableBoolean, 3);
+_GEODE_CACHEABLE_KEY_TYPE_DEF_(bool, CacheableBoolean);
 /**
  * An immutable wrapper for booleans that can serve as
  * a distributable key object for caching.
  */
-_GEODE_CACHEABLE_KEY_TYPE_(bool, CacheableBoolean, 3);
+_GEODE_CACHEABLE_KEY_TYPE_(bool, CacheableBoolean);
 
-_GEODE_CACHEABLE_KEY_TYPE_DEF_(int8_t, CacheableByte, 15);
+_GEODE_CACHEABLE_KEY_TYPE_DEF_(int8_t, CacheableByte);
 /**
  * An immutable wrapper for bytes that can serve as
  * a distributable key object for caching.
  */
-_GEODE_CACHEABLE_KEY_TYPE_(int8_t, CacheableByte, 15);
+_GEODE_CACHEABLE_KEY_TYPE_(int8_t, CacheableByte);
 
-_GEODE_CACHEABLE_KEY_TYPE_DEF_(double, CacheableDouble, 63);
+_GEODE_CACHEABLE_KEY_TYPE_DEF_(double, CacheableDouble);
 /**
  * An immutable wrapper for doubles that can serve as
  * a distributable key object for caching.
  */
-_GEODE_CACHEABLE_KEY_TYPE_(double, CacheableDouble, 63);
+_GEODE_CACHEABLE_KEY_TYPE_(double, CacheableDouble);
 
-_GEODE_CACHEABLE_KEY_TYPE_DEF_(float, CacheableFloat, 63);
+_GEODE_CACHEABLE_KEY_TYPE_DEF_(float, CacheableFloat);
 /**
  * An immutable wrapper for floats that can serve as
  * a distributable key object for caching.
  */
-_GEODE_CACHEABLE_KEY_TYPE_(float, CacheableFloat, 63);
+_GEODE_CACHEABLE_KEY_TYPE_(float, CacheableFloat);
 
-_GEODE_CACHEABLE_KEY_TYPE_DEF_(int16_t, CacheableInt16, 15);
+_GEODE_CACHEABLE_KEY_TYPE_DEF_(int16_t, CacheableInt16);
 /**
  * An immutable wrapper for 16-bit integers that can serve as
  * a distributable key object for caching.
  */
-_GEODE_CACHEABLE_KEY_TYPE_(int16_t, CacheableInt16, 15);
+_GEODE_CACHEABLE_KEY_TYPE_(int16_t, CacheableInt16);
 
-_GEODE_CACHEABLE_KEY_TYPE_DEF_(int32_t, CacheableInt32, 15);
+_GEODE_CACHEABLE_KEY_TYPE_DEF_(int32_t, CacheableInt32);
 /**
  * An immutable wrapper for 32-bit integers that can serve as
  * a distributable key object for caching.
  */
-_GEODE_CACHEABLE_KEY_TYPE_(int32_t, CacheableInt32, 15);
+_GEODE_CACHEABLE_KEY_TYPE_(int32_t, CacheableInt32);
 
-_GEODE_CACHEABLE_KEY_TYPE_DEF_(int64_t, CacheableInt64, 31);
+_GEODE_CACHEABLE_KEY_TYPE_DEF_(int64_t, CacheableInt64);
 /**
  * An immutable wrapper for 64-bit integers that can serve as
  * a distributable key object for caching.
  */
-_GEODE_CACHEABLE_KEY_TYPE_(int64_t, CacheableInt64, 31);
+_GEODE_CACHEABLE_KEY_TYPE_(int64_t, CacheableInt64);
 
-_GEODE_CACHEABLE_KEY_TYPE_DEF_(char16_t, CacheableCharacter, 3);
+_GEODE_CACHEABLE_KEY_TYPE_DEF_(char16_t, CacheableCharacter);
 /**
  * An immutable wrapper for characters that can serve as
  * a distributable key object for caching.
  */
-_GEODE_CACHEABLE_KEY_TYPE_(char16_t, CacheableCharacter, 3);
+_GEODE_CACHEABLE_KEY_TYPE_(char16_t, CacheableCharacter);
 
 // Instantiations for array built-in Cacheables
 
 template <typename T, GeodeTypeIds::IdValues GeodeTypeId>
-class _GEODE_EXPORT CacheableArray : public Cacheable {
+class APACHE_GEODE_EXPORT CacheableArray : public Cacheable {
  protected:
   inline CacheableArray() = default;
 
diff --git a/cppcache/include/geode/CacheableDate.hpp b/cppcache/include/geode/CacheableDate.hpp
index 7b8de69..1fd52f9 100644
--- a/cppcache/include/geode/CacheableDate.hpp
+++ b/cppcache/include/geode/CacheableDate.hpp
@@ -41,7 +41,7 @@ namespace client {
  * can serve as a distributable key object for caching as well as being a date
  * value.
  */
-class _GEODE_EXPORT CacheableDate : public CacheableKey {
+class APACHE_GEODE_EXPORT CacheableDate : public CacheableKey {
  private:
   /**
    * Milliseconds since January 1, 1970, 00:00:00 GMT to be consistent with Java
diff --git a/cppcache/include/geode/CacheableEnum.hpp b/cppcache/include/geode/CacheableEnum.hpp
index da90eac..c185a36 100644
--- a/cppcache/include/geode/CacheableEnum.hpp
+++ b/cppcache/include/geode/CacheableEnum.hpp
@@ -51,7 +51,7 @@ class DataInput;
 class DataOutput;
 class Serializable;
 
-class _GEODE_EXPORT CacheableEnum : public CacheableKey {
+class APACHE_GEODE_EXPORT CacheableEnum : public CacheableKey {
  private:
   std::string m_enumClassName;
   std::string m_enumName;
diff --git a/cppcache/include/geode/CacheableFileName.hpp b/cppcache/include/geode/CacheableFileName.hpp
index 92d2cc7..6609e11 100644
--- a/cppcache/include/geode/CacheableFileName.hpp
+++ b/cppcache/include/geode/CacheableFileName.hpp
@@ -43,7 +43,7 @@ class DataInput;
 class DataOutput;
 class Serializable;
 
-class _GEODE_EXPORT CacheableFileName : public CacheableString {
+class APACHE_GEODE_EXPORT CacheableFileName : public CacheableString {
  public:
   /**
    *@brief serialize this object
diff --git a/cppcache/include/geode/CacheableKey.hpp b/cppcache/include/geode/CacheableKey.hpp
index cad90c9..4d31106 100644
--- a/cppcache/include/geode/CacheableKey.hpp
+++ b/cppcache/include/geode/CacheableKey.hpp
@@ -37,7 +37,7 @@ namespace geode {
 namespace client {
 
 /** Represents a cacheable key */
-class _GEODE_EXPORT CacheableKey : public Cacheable {
+class APACHE_GEODE_EXPORT CacheableKey : public Cacheable {
  protected:
   /** Constructor */
   CacheableKey() : Cacheable() {}
diff --git a/cppcache/include/geode/CacheableObjectArray.hpp b/cppcache/include/geode/CacheableObjectArray.hpp
index 22086dd..8971fff 100644
--- a/cppcache/include/geode/CacheableObjectArray.hpp
+++ b/cppcache/include/geode/CacheableObjectArray.hpp
@@ -41,7 +41,7 @@ class DataInput;
 class DataOutput;
 class Serializable;
 
-class _GEODE_EXPORT CacheableObjectArray
+class APACHE_GEODE_EXPORT CacheableObjectArray
     : public Cacheable,
       public std::vector<std::shared_ptr<Cacheable>> {
  public:
diff --git a/cppcache/include/geode/CacheableString.hpp b/cppcache/include/geode/CacheableString.hpp
index 9f7337a..3e4b508 100644
--- a/cppcache/include/geode/CacheableString.hpp
+++ b/cppcache/include/geode/CacheableString.hpp
@@ -35,7 +35,7 @@ namespace client {
  * Implement a immutable C string wrapper that can serve as a distributable
  * key object for caching as well as being a string value.
  */
-class _GEODE_EXPORT CacheableString : public CacheableKey {
+class APACHE_GEODE_EXPORT CacheableString : public CacheableKey {
  protected:
   std::string m_str;
   int8_t m_type;
diff --git a/cppcache/include/geode/CacheableUndefined.hpp b/cppcache/include/geode/CacheableUndefined.hpp
index 70d5b32..5ef2fb1 100644
--- a/cppcache/include/geode/CacheableUndefined.hpp
+++ b/cppcache/include/geode/CacheableUndefined.hpp
@@ -39,7 +39,7 @@ class DataInput;
 class DataOutput;
 class Serializable;
 
-class _GEODE_EXPORT CacheableUndefined : public Cacheable {
+class APACHE_GEODE_EXPORT CacheableUndefined : public Cacheable {
  public:
   /**
    *@brief serialize this object
diff --git a/cppcache/include/geode/CqAttributes.hpp b/cppcache/include/geode/CqAttributes.hpp
index 7810447..688f50f 100644
--- a/cppcache/include/geode/CqAttributes.hpp
+++ b/cppcache/include/geode/CqAttributes.hpp
@@ -40,7 +40,7 @@ namespace client {
  *
  * For compatibility rules and default values, see {@link CqAttributesFactory}.
  */
-class _GEODE_EXPORT CqAttributes {
+class APACHE_GEODE_EXPORT CqAttributes {
  public:
   typedef std::vector<std::shared_ptr<CqListener>> listener_container_type;
 
diff --git a/cppcache/include/geode/CqAttributesFactory.hpp b/cppcache/include/geode/CqAttributesFactory.hpp
index 3d07131..5d712c6 100644
--- a/cppcache/include/geode/CqAttributesFactory.hpp
+++ b/cppcache/include/geode/CqAttributesFactory.hpp
@@ -57,7 +57,7 @@ namespace client {
 class CqAttributes;
 class CqListener;
 
-class _GEODE_EXPORT CqAttributesFactory {
+class APACHE_GEODE_EXPORT CqAttributesFactory {
  public:
   /**
    * Creates a new instance of AttributesFactory ready to create a
diff --git a/cppcache/include/geode/CqAttributesMutator.hpp b/cppcache/include/geode/CqAttributesMutator.hpp
index b41e9a3..39a0eab 100644
--- a/cppcache/include/geode/CqAttributesMutator.hpp
+++ b/cppcache/include/geode/CqAttributesMutator.hpp
@@ -39,7 +39,7 @@ class CqListener;
  * of certain CQ attributes after the CQ has been created.
  *
  */
-class _GEODE_EXPORT CqAttributesMutator {
+class APACHE_GEODE_EXPORT CqAttributesMutator {
  public:
   /**
    * Adds a CQ listener to the end of the list of CQ listeners on this CqQuery.
diff --git a/cppcache/include/geode/CqEvent.hpp b/cppcache/include/geode/CqEvent.hpp
index 03aef68..dae886e 100644
--- a/cppcache/include/geode/CqEvent.hpp
+++ b/cppcache/include/geode/CqEvent.hpp
@@ -50,7 +50,7 @@ class CqQuery;
  * event.
  * The CqEvent is not an extension of CacheEvent.
  */
-class _GEODE_EXPORT CqEvent {
+class APACHE_GEODE_EXPORT CqEvent {
  public:
   CqEvent() {}
 
diff --git a/cppcache/include/geode/CqListener.hpp b/cppcache/include/geode/CqListener.hpp
index e4d623b..13d83be 100644
--- a/cppcache/include/geode/CqListener.hpp
+++ b/cppcache/include/geode/CqListener.hpp
@@ -39,7 +39,7 @@ class CacheListener;
  * is an event satisfied by the CQ and the other called when there is an
  * error during CQ processing.
  */
-class _GEODE_EXPORT CqListener {
+class APACHE_GEODE_EXPORT CqListener {
  public:
   /**
    * This method is invoked when an event is occurred on the region
diff --git a/cppcache/include/geode/CqQuery.hpp b/cppcache/include/geode/CqQuery.hpp
index 662fca0..a39ca26 100644
--- a/cppcache/include/geode/CqQuery.hpp
+++ b/cppcache/include/geode/CqQuery.hpp
@@ -52,7 +52,7 @@ class Query;
  * operate on the same <code>CqQuery</code> object concurrently rather should
  * have their own <code>CqQuery</code> objects.
  */
-class _GEODE_EXPORT CqQuery {
+class APACHE_GEODE_EXPORT CqQuery {
  public:
   /**
    * Get the query string provided when a new Query was created from a
diff --git a/cppcache/include/geode/CqResults.hpp b/cppcache/include/geode/CqResults.hpp
index f4af53a..d41edf7 100644
--- a/cppcache/include/geode/CqResults.hpp
+++ b/cppcache/include/geode/CqResults.hpp
@@ -40,7 +40,7 @@ namespace client {
  * A CqResults is obtained by executing a Query on the server.
  * This will be a StructSet.
  */
-class _GEODE_EXPORT CqResults : public SelectResults {};
+class APACHE_GEODE_EXPORT CqResults : public SelectResults {};
 
 }  // namespace client
 }  // namespace geode
diff --git a/cppcache/include/geode/CqServiceStatistics.hpp b/cppcache/include/geode/CqServiceStatistics.hpp
index 0813925..5582dc2 100644
--- a/cppcache/include/geode/CqServiceStatistics.hpp
+++ b/cppcache/include/geode/CqServiceStatistics.hpp
@@ -36,7 +36,7 @@ namespace client {
  * This class provides methods to get aggregate statistical information
  * about the CQs of a client.
  */
-class _GEODE_EXPORT CqServiceStatistics {
+class APACHE_GEODE_EXPORT CqServiceStatistics {
  public:
   /**
    * Get the number of CQs currently active.
diff --git a/cppcache/include/geode/CqStatistics.hpp b/cppcache/include/geode/CqStatistics.hpp
index d3c61f3..a460ef1 100644
--- a/cppcache/include/geode/CqStatistics.hpp
+++ b/cppcache/include/geode/CqStatistics.hpp
@@ -38,7 +38,7 @@ namespace client {
  * represented by the CqQuery object.
  *
  */
-class _GEODE_EXPORT CqStatistics {
+class APACHE_GEODE_EXPORT CqStatistics {
  public:
   /**
    * Get number of Insert events qualified by this CQ.
diff --git a/cppcache/include/geode/CqStatusListener.hpp b/cppcache/include/geode/CqStatusListener.hpp
index 7a05da8..66209c7 100644
--- a/cppcache/include/geode/CqStatusListener.hpp
+++ b/cppcache/include/geode/CqStatusListener.hpp
@@ -34,7 +34,7 @@ namespace client {
 * @since 7.0
 */
 
-class _GEODE_EXPORT CqStatusListener : public CqListener {
+class APACHE_GEODE_EXPORT CqStatusListener : public CqListener {
  public:
   /**
   * Called when the cq loses connection with all servers
diff --git a/cppcache/include/geode/DataInput.hpp b/cppcache/include/geode/DataInput.hpp
index 088d168..76032cd 100644
--- a/cppcache/include/geode/DataInput.hpp
+++ b/cppcache/include/geode/DataInput.hpp
@@ -57,7 +57,7 @@ class DataInputInternal;
  * @remarks None of the output parameters in the methods below can be nullptr
  *   unless otherwise noted.
  */
-class _GEODE_EXPORT DataInput {
+class APACHE_GEODE_EXPORT DataInput {
  public:
   /**
    * Read a signed byte from the <code>DataInput</code>.
diff --git a/cppcache/include/geode/DataOutput.hpp b/cppcache/include/geode/DataOutput.hpp
index 5e7b5f1..3e0575f 100644
--- a/cppcache/include/geode/DataOutput.hpp
+++ b/cppcache/include/geode/DataOutput.hpp
@@ -46,7 +46,7 @@ class CacheImpl;
  * strings, <code>Serializable</code> objects to a byte stream.
  * This class is intentionally not thread safe.
  */
-class _GEODE_EXPORT DataOutput {
+class APACHE_GEODE_EXPORT DataOutput {
  public:
   /**
    * Write an unsigned byte to the <code>DataOutput</code>.
diff --git a/cppcache/include/geode/DefaultResultCollector.hpp b/cppcache/include/geode/DefaultResultCollector.hpp
index d7fdb37..605c43e 100644
--- a/cppcache/include/geode/DefaultResultCollector.hpp
+++ b/cppcache/include/geode/DefaultResultCollector.hpp
@@ -38,7 +38,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT DefaultResultCollector : public ResultCollector {
+class APACHE_GEODE_EXPORT DefaultResultCollector : public ResultCollector {
  public:
   DefaultResultCollector();
   virtual ~DefaultResultCollector() noexcept;
diff --git a/cppcache/include/geode/Delta.hpp b/cppcache/include/geode/Delta.hpp
index 62cffac..8d60b9e 100644
--- a/cppcache/include/geode/Delta.hpp
+++ b/cppcache/include/geode/Delta.hpp
@@ -47,7 +47,7 @@ namespace client {
 class DataInput;
 class DataOutput;
 
-class _GEODE_EXPORT Delta {
+class APACHE_GEODE_EXPORT Delta {
  public:
   /**
    * <code>hasDelta( )</code> is invoked by Geode during <code>Region::put(
diff --git a/cppcache/include/geode/DistributedSystem.hpp b/cppcache/include/geode/DistributedSystem.hpp
index 87346fa..1c922ce 100644
--- a/cppcache/include/geode/DistributedSystem.hpp
+++ b/cppcache/include/geode/DistributedSystem.hpp
@@ -51,7 +51,7 @@ class CacheRegionHelper;
 class DiffieHellman;
 class TcrConnection;
 
-class _GEODE_EXPORT DistributedSystem {
+class APACHE_GEODE_EXPORT DistributedSystem {
   /**
    * @brief public methods
    */
diff --git a/cppcache/include/geode/EntryEvent.hpp b/cppcache/include/geode/EntryEvent.hpp
index 56f7f79..e48d723 100644
--- a/cppcache/include/geode/EntryEvent.hpp
+++ b/cppcache/include/geode/EntryEvent.hpp
@@ -40,7 +40,7 @@ class CacheableKey;
 class Region;
 class Serializable;
 
-class _GEODE_EXPORT EntryEvent {
+class APACHE_GEODE_EXPORT EntryEvent {
  protected:
   std::shared_ptr<Region> m_region;      /**< Region */
   std::shared_ptr<CacheableKey> m_key;   /**< Cacheable key */
diff --git a/cppcache/include/geode/Exception.hpp b/cppcache/include/geode/Exception.hpp
index 38bcbcb..d30164c 100644
--- a/cppcache/include/geode/Exception.hpp
+++ b/cppcache/include/geode/Exception.hpp
@@ -45,7 +45,7 @@ class StackTrace;
  * @class Exception Exception.hpp
  * A description of an exception that occurred during a cache operation.
  */
-class _GEODE_EXPORT Exception : public std::exception {
+class APACHE_GEODE_EXPORT Exception : public std::exception {
   /**
    * @brief public methods
    */
diff --git a/cppcache/include/geode/ExceptionTypes.hpp b/cppcache/include/geode/ExceptionTypes.hpp
index 7bb8208..fc8c55a 100644
--- a/cppcache/include/geode/ExceptionTypes.hpp
+++ b/cppcache/include/geode/ExceptionTypes.hpp
@@ -37,7 +37,7 @@ namespace client {
 /**
  *@brief A geode assertion exception.
  **/
-class _GEODE_EXPORT AssertionException : public Exception {
+class APACHE_GEODE_EXPORT AssertionException : public Exception {
  public:
   using Exception::Exception;
   virtual ~AssertionException() noexcept {}
@@ -49,7 +49,7 @@ class _GEODE_EXPORT AssertionException : public Exception {
 /**
  *@brief Thrown when an argument to a method is illegal.
  **/
-class _GEODE_EXPORT IllegalArgumentException : public Exception {
+class APACHE_GEODE_EXPORT IllegalArgumentException : public Exception {
  public:
   using Exception::Exception;
   virtual ~IllegalArgumentException() noexcept {}
@@ -61,7 +61,7 @@ class _GEODE_EXPORT IllegalArgumentException : public Exception {
 /**
  *@brief Thrown when the state of cache is manipulated to be illegal.
  **/
-class _GEODE_EXPORT IllegalStateException : public Exception {
+class APACHE_GEODE_EXPORT IllegalStateException : public Exception {
  public:
   using Exception::Exception;
   virtual ~IllegalStateException() noexcept {}
@@ -73,7 +73,7 @@ class _GEODE_EXPORT IllegalStateException : public Exception {
 /**
  *@brief Thrown when an attempt is made to create an existing cache.
  **/
-class _GEODE_EXPORT CacheExistsException : public Exception {
+class APACHE_GEODE_EXPORT CacheExistsException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CacheExistsException() noexcept {}
@@ -85,7 +85,7 @@ class _GEODE_EXPORT CacheExistsException : public Exception {
 /**
  *@brief Thrown when the cache xml is incorrect.
  **/
-class _GEODE_EXPORT CacheXmlException : public Exception {
+class APACHE_GEODE_EXPORT CacheXmlException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CacheXmlException() noexcept {}
@@ -96,7 +96,7 @@ class _GEODE_EXPORT CacheXmlException : public Exception {
 /**
  *@brief Thrown when a timout occurs.
  **/
-class _GEODE_EXPORT TimeoutException : public Exception {
+class APACHE_GEODE_EXPORT TimeoutException : public Exception {
  public:
   using Exception::Exception;
   virtual ~TimeoutException() noexcept {}
@@ -108,7 +108,7 @@ class _GEODE_EXPORT TimeoutException : public Exception {
 /**
  *@brief Thrown when the cache writer aborts the operation.
  **/
-class _GEODE_EXPORT CacheWriterException : public Exception {
+class APACHE_GEODE_EXPORT CacheWriterException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CacheWriterException() noexcept {}
@@ -120,7 +120,7 @@ class _GEODE_EXPORT CacheWriterException : public Exception {
 /**
  *@brief Thrown when an attempt is made to create an existing region.
  **/
-class _GEODE_EXPORT RegionExistsException : public Exception {
+class APACHE_GEODE_EXPORT RegionExistsException : public Exception {
  public:
   using Exception::Exception;
   virtual ~RegionExistsException() noexcept {}
@@ -132,7 +132,7 @@ class _GEODE_EXPORT RegionExistsException : public Exception {
 /**
  *@brief Thrown when an operation is attempted on a closed cache.
  **/
-class _GEODE_EXPORT CacheClosedException : public Exception {
+class APACHE_GEODE_EXPORT CacheClosedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CacheClosedException() noexcept {}
@@ -144,7 +144,7 @@ class _GEODE_EXPORT CacheClosedException : public Exception {
 /**
  *@brief Thrown when lease of cache proxy has expired.
  **/
-class _GEODE_EXPORT LeaseExpiredException : public Exception {
+class APACHE_GEODE_EXPORT LeaseExpiredException : public Exception {
  public:
   using Exception::Exception;
   virtual ~LeaseExpiredException() noexcept {}
@@ -156,7 +156,7 @@ class _GEODE_EXPORT LeaseExpiredException : public Exception {
 /**
  *@brief Thrown when the cache loader aborts the operation.
  **/
-class _GEODE_EXPORT CacheLoaderException : public Exception {
+class APACHE_GEODE_EXPORT CacheLoaderException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CacheLoaderException() noexcept {}
@@ -168,7 +168,7 @@ class _GEODE_EXPORT CacheLoaderException : public Exception {
 /**
  *@brief Thrown when an operation is attempted on a destroyed region.
  **/
-class _GEODE_EXPORT RegionDestroyedException : public Exception {
+class APACHE_GEODE_EXPORT RegionDestroyedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~RegionDestroyedException() noexcept {}
@@ -180,7 +180,7 @@ class _GEODE_EXPORT RegionDestroyedException : public Exception {
 /**
  *@brief Thrown when an operation is attempted on a destroyed entry.
  **/
-class _GEODE_EXPORT EntryDestroyedException : public Exception {
+class APACHE_GEODE_EXPORT EntryDestroyedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~EntryDestroyedException() noexcept {}
@@ -192,7 +192,7 @@ class _GEODE_EXPORT EntryDestroyedException : public Exception {
 /**
  *@brief Thrown when the connecting target is not running.
  **/
-class _GEODE_EXPORT NoSystemException : public Exception {
+class APACHE_GEODE_EXPORT NoSystemException : public Exception {
  public:
   using Exception::Exception;
   virtual ~NoSystemException() noexcept {}
@@ -205,7 +205,7 @@ class _GEODE_EXPORT NoSystemException : public Exception {
  *@brief Thrown when an attempt is made to connect to
  *       DistributedSystem second time.
  **/
-class _GEODE_EXPORT AlreadyConnectedException : public Exception {
+class APACHE_GEODE_EXPORT AlreadyConnectedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~AlreadyConnectedException() noexcept {}
@@ -217,7 +217,7 @@ class _GEODE_EXPORT AlreadyConnectedException : public Exception {
 /**
  *@brief Thrown when a non-existing file is accessed.
  **/
-class _GEODE_EXPORT FileNotFoundException : public Exception {
+class APACHE_GEODE_EXPORT FileNotFoundException : public Exception {
  public:
   using Exception::Exception;
   virtual ~FileNotFoundException() noexcept {}
@@ -229,7 +229,7 @@ class _GEODE_EXPORT FileNotFoundException : public Exception {
 /**
  *@brief Thrown when an operation is interrupted.
  **/
-class _GEODE_EXPORT InterruptedException : public Exception {
+class APACHE_GEODE_EXPORT InterruptedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~InterruptedException() noexcept {}
@@ -242,7 +242,7 @@ class _GEODE_EXPORT InterruptedException : public Exception {
  *@brief Thrown when an operation unsupported by the
  *       current configuration is attempted.
  **/
-class _GEODE_EXPORT UnsupportedOperationException : public Exception {
+class APACHE_GEODE_EXPORT UnsupportedOperationException : public Exception {
  public:
   using Exception::Exception;
   virtual ~UnsupportedOperationException() noexcept {}
@@ -255,7 +255,7 @@ class _GEODE_EXPORT UnsupportedOperationException : public Exception {
  *@brief Thrown when statistics are invoked for a region where
  *       they are disabled.
  **/
-class _GEODE_EXPORT StatisticsDisabledException : public Exception {
+class APACHE_GEODE_EXPORT StatisticsDisabledException : public Exception {
  public:
   using Exception::Exception;
   virtual ~StatisticsDisabledException() noexcept {}
@@ -267,7 +267,7 @@ class _GEODE_EXPORT StatisticsDisabledException : public Exception {
 /**
  *@brief Thrown when a concurrent operation fails.
  **/
-class _GEODE_EXPORT ConcurrentModificationException : public Exception {
+class APACHE_GEODE_EXPORT ConcurrentModificationException : public Exception {
  public:
   using Exception::Exception;
   virtual ~ConcurrentModificationException() noexcept {}
@@ -279,7 +279,7 @@ class _GEODE_EXPORT ConcurrentModificationException : public Exception {
 /**
  *@brief An unknown exception occurred.
  **/
-class _GEODE_EXPORT UnknownException : public Exception {
+class APACHE_GEODE_EXPORT UnknownException : public Exception {
  public:
   using Exception::Exception;
   virtual ~UnknownException() noexcept {}
@@ -291,7 +291,7 @@ class _GEODE_EXPORT UnknownException : public Exception {
 /**
  *@brief Thrown when a cast operation fails.
  **/
-class _GEODE_EXPORT ClassCastException : public Exception {
+class APACHE_GEODE_EXPORT ClassCastException : public Exception {
  public:
   using Exception::Exception;
   virtual ~ClassCastException() noexcept {}
@@ -303,7 +303,7 @@ class _GEODE_EXPORT ClassCastException : public Exception {
 /**
  *@brief Thrown when an operation is attempted on a non-existent entry.
  **/
-class _GEODE_EXPORT EntryNotFoundException : public Exception {
+class APACHE_GEODE_EXPORT EntryNotFoundException : public Exception {
  public:
   using Exception::Exception;
   virtual ~EntryNotFoundException() noexcept {}
@@ -315,7 +315,7 @@ class _GEODE_EXPORT EntryNotFoundException : public Exception {
 /**
  *@brief Thrown when there is an input/output error.
  **/
-class _GEODE_EXPORT GeodeIOException : public Exception {
+class APACHE_GEODE_EXPORT GeodeIOException : public Exception {
  public:
   using Exception::Exception;
   virtual ~GeodeIOException() noexcept {}
@@ -327,7 +327,7 @@ class _GEODE_EXPORT GeodeIOException : public Exception {
 /**
  *@brief Thrown when geode configuration file is incorrect.
  **/
-class _GEODE_EXPORT GeodeConfigException : public Exception {
+class APACHE_GEODE_EXPORT GeodeConfigException : public Exception {
  public:
   using Exception::Exception;
   virtual ~GeodeConfigException() noexcept {}
@@ -340,7 +340,7 @@ class _GEODE_EXPORT GeodeConfigException : public Exception {
  *@brief Thrown when a null argument is provided to a method
  *       where it is expected to be non-null.
  **/
-class _GEODE_EXPORT NullPointerException : public Exception {
+class APACHE_GEODE_EXPORT NullPointerException : public Exception {
  public:
   using Exception::Exception;
   virtual ~NullPointerException() noexcept {}
@@ -352,7 +352,7 @@ class _GEODE_EXPORT NullPointerException : public Exception {
 /**
  *@brief Thrown when attempt is made to create an existing entry.
  **/
-class _GEODE_EXPORT EntryExistsException : public Exception {
+class APACHE_GEODE_EXPORT EntryExistsException : public Exception {
  public:
   using Exception::Exception;
   virtual ~EntryExistsException() noexcept {}
@@ -365,7 +365,7 @@ class _GEODE_EXPORT EntryExistsException : public Exception {
  *@brief Thrown when an operation is attempted before connecting
  *       to the distributed system.
  **/
-class _GEODE_EXPORT NotConnectedException : public Exception {
+class APACHE_GEODE_EXPORT NotConnectedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~NotConnectedException() noexcept {}
@@ -377,7 +377,7 @@ class _GEODE_EXPORT NotConnectedException : public Exception {
 /**
  *@brief Thrown when there is an error in the cache proxy.
  **/
-class _GEODE_EXPORT CacheProxyException : public Exception {
+class APACHE_GEODE_EXPORT CacheProxyException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CacheProxyException() noexcept {}
@@ -389,7 +389,7 @@ class _GEODE_EXPORT CacheProxyException : public Exception {
 /**
  *@brief Thrown when the system cannot allocate any more memory.
  **/
-class _GEODE_EXPORT OutOfMemoryException : public Exception {
+class APACHE_GEODE_EXPORT OutOfMemoryException : public Exception {
  public:
   using Exception::Exception;
   virtual ~OutOfMemoryException() noexcept {}
@@ -402,7 +402,7 @@ class _GEODE_EXPORT OutOfMemoryException : public Exception {
  *@brief Thrown when an attempt is made to release a lock not
  *       owned by the thread.
  **/
-class _GEODE_EXPORT NotOwnerException : public Exception {
+class APACHE_GEODE_EXPORT NotOwnerException : public Exception {
  public:
   using Exception::Exception;
   virtual ~NotOwnerException() noexcept {}
@@ -414,7 +414,7 @@ class _GEODE_EXPORT NotOwnerException : public Exception {
 /**
  *@brief Thrown when a region is created in an incorrect scope.
  **/
-class _GEODE_EXPORT WrongRegionScopeException : public Exception {
+class APACHE_GEODE_EXPORT WrongRegionScopeException : public Exception {
  public:
   using Exception::Exception;
   virtual ~WrongRegionScopeException() noexcept {}
@@ -426,7 +426,7 @@ class _GEODE_EXPORT WrongRegionScopeException : public Exception {
 /**
  *@brief Thrown when the internal buffer size is exceeded.
  **/
-class _GEODE_EXPORT BufferSizeExceededException : public Exception {
+class APACHE_GEODE_EXPORT BufferSizeExceededException : public Exception {
  public:
   using Exception::Exception;
   virtual ~BufferSizeExceededException() noexcept {}
@@ -438,7 +438,7 @@ class _GEODE_EXPORT BufferSizeExceededException : public Exception {
 /**
  *@brief Thrown when a region creation operation fails.
  **/
-class _GEODE_EXPORT RegionCreationFailedException : public Exception {
+class APACHE_GEODE_EXPORT RegionCreationFailedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~RegionCreationFailedException() noexcept {}
@@ -450,7 +450,7 @@ class _GEODE_EXPORT RegionCreationFailedException : public Exception {
 /**
  *@brief Thrown when there is a fatal internal exception in geode.
  */
-class _GEODE_EXPORT FatalInternalException : public Exception {
+class APACHE_GEODE_EXPORT FatalInternalException : public Exception {
  public:
   using Exception::Exception;
   virtual ~FatalInternalException() noexcept {}
@@ -463,7 +463,7 @@ class _GEODE_EXPORT FatalInternalException : public Exception {
  *@brief Thrown by the persistence manager when a write
  *       fails due to disk failure.
  **/
-class _GEODE_EXPORT DiskFailureException : public Exception {
+class APACHE_GEODE_EXPORT DiskFailureException : public Exception {
  public:
   using Exception::Exception;
   virtual ~DiskFailureException() noexcept {}
@@ -476,7 +476,7 @@ class _GEODE_EXPORT DiskFailureException : public Exception {
  *@brief Thrown by the persistence manager when the data
  *@brief to be read from disk is corrupt.
  **/
-class _GEODE_EXPORT DiskCorruptException : public Exception {
+class APACHE_GEODE_EXPORT DiskCorruptException : public Exception {
  public:
   using Exception::Exception;
   virtual ~DiskCorruptException() noexcept {}
@@ -488,7 +488,7 @@ class _GEODE_EXPORT DiskCorruptException : public Exception {
 /**
  *@brief Thrown when persistence manager fails to initialize.
  **/
-class _GEODE_EXPORT InitFailedException : public Exception {
+class APACHE_GEODE_EXPORT InitFailedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~InitFailedException() noexcept {}
@@ -500,7 +500,7 @@ class _GEODE_EXPORT InitFailedException : public Exception {
 /**
  *@brief Thrown when persistence manager fails to close properly.
  **/
-class _GEODE_EXPORT ShutdownFailedException : public Exception {
+class APACHE_GEODE_EXPORT ShutdownFailedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~ShutdownFailedException() noexcept {}
@@ -512,7 +512,7 @@ class _GEODE_EXPORT ShutdownFailedException : public Exception {
 /**
  *@brief Thrown when an exception occurs on the cache server.
  **/
-class _GEODE_EXPORT CacheServerException : public Exception {
+class APACHE_GEODE_EXPORT CacheServerException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CacheServerException() noexcept {}
@@ -524,7 +524,7 @@ class _GEODE_EXPORT CacheServerException : public Exception {
 /**
  *@brief Thrown when bound of array/vector etc. is exceeded.
  **/
-class _GEODE_EXPORT OutOfRangeException : public Exception {
+class APACHE_GEODE_EXPORT OutOfRangeException : public Exception {
  public:
   using Exception::Exception;
   virtual ~OutOfRangeException() noexcept {}
@@ -536,7 +536,7 @@ class _GEODE_EXPORT OutOfRangeException : public Exception {
 /**
  *@brief Thrown when query exception occurs at the server.
  **/
-class _GEODE_EXPORT QueryException : public Exception {
+class APACHE_GEODE_EXPORT QueryException : public Exception {
  public:
   using Exception::Exception;
   virtual ~QueryException() noexcept {}
@@ -548,7 +548,7 @@ class _GEODE_EXPORT QueryException : public Exception {
 /**
  *@brief Thrown when an unknown message is received from the server.
  **/
-class _GEODE_EXPORT MessageException : public Exception {
+class APACHE_GEODE_EXPORT MessageException : public Exception {
  public:
   using Exception::Exception;
   virtual ~MessageException() noexcept {}
@@ -560,7 +560,7 @@ class _GEODE_EXPORT MessageException : public Exception {
 /**
  *@brief Thrown when a non authorized operation is done.
  **/
-class _GEODE_EXPORT NotAuthorizedException : public Exception {
+class APACHE_GEODE_EXPORT NotAuthorizedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~NotAuthorizedException() noexcept {}
@@ -572,7 +572,7 @@ class _GEODE_EXPORT NotAuthorizedException : public Exception {
 /**
  *@brief Thrown when authentication fails.
  **/
-class _GEODE_EXPORT AuthenticationFailedException : public Exception {
+class APACHE_GEODE_EXPORT AuthenticationFailedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~AuthenticationFailedException() noexcept {}
@@ -584,7 +584,7 @@ class _GEODE_EXPORT AuthenticationFailedException : public Exception {
 /**
  *@brief Thrown when no credentials are provided by client when server expects.
  **/
-class _GEODE_EXPORT AuthenticationRequiredException : public Exception {
+class APACHE_GEODE_EXPORT AuthenticationRequiredException : public Exception {
  public:
   using Exception::Exception;
   virtual ~AuthenticationRequiredException() noexcept {}
@@ -596,7 +596,7 @@ class _GEODE_EXPORT AuthenticationRequiredException : public Exception {
 /**
  *@brief Thrown when two durable connect with same Id.
  **/
-class _GEODE_EXPORT DuplicateDurableClientException : public Exception {
+class APACHE_GEODE_EXPORT DuplicateDurableClientException : public Exception {
  public:
   using Exception::Exception;
   virtual ~DuplicateDurableClientException() noexcept {}
@@ -608,7 +608,7 @@ class _GEODE_EXPORT DuplicateDurableClientException : public Exception {
 /**
  *@brief Thrown when the cache listener throws an exception.
  **/
-class _GEODE_EXPORT CacheListenerException : public Exception {
+class APACHE_GEODE_EXPORT CacheListenerException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CacheListenerException() noexcept {}
@@ -619,7 +619,7 @@ class _GEODE_EXPORT CacheListenerException : public Exception {
 /**
  *@brief Thrown during continuous query execution time.
  **/
-class _GEODE_EXPORT CqException : public Exception {
+class APACHE_GEODE_EXPORT CqException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CqException() noexcept {}
@@ -630,7 +630,7 @@ class _GEODE_EXPORT CqException : public Exception {
 /**
  *@brief Thrown if the Cq on which the operaion performed is closed
  **/
-class _GEODE_EXPORT CqClosedException : public Exception {
+class APACHE_GEODE_EXPORT CqClosedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CqClosedException() noexcept {}
@@ -641,7 +641,7 @@ class _GEODE_EXPORT CqClosedException : public Exception {
 /**
  *@brief Thrown if the Cq Query failed
  **/
-class _GEODE_EXPORT CqQueryException : public Exception {
+class APACHE_GEODE_EXPORT CqQueryException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CqQueryException() noexcept {}
@@ -652,7 +652,7 @@ class _GEODE_EXPORT CqQueryException : public Exception {
 /**
  *@brief Thrown if a Cq by this name already exists on this client
  **/
-class _GEODE_EXPORT CqExistsException : public Exception {
+class APACHE_GEODE_EXPORT CqExistsException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CqExistsException() noexcept {}
@@ -670,7 +670,7 @@ class _GEODE_EXPORT CqExistsException : public Exception {
  *region path.
  *      Bind parameters in the query are not supported for the initial release.
  **/
-class _GEODE_EXPORT CqInvalidException : public Exception {
+class APACHE_GEODE_EXPORT CqInvalidException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CqInvalidException() noexcept {}
@@ -681,7 +681,7 @@ class _GEODE_EXPORT CqInvalidException : public Exception {
 /**
  *@brief Thrown if function execution failed
  **/
-class _GEODE_EXPORT FunctionExecutionException : public Exception {
+class APACHE_GEODE_EXPORT FunctionExecutionException : public Exception {
  public:
   using Exception::Exception;
   virtual ~FunctionExecutionException() noexcept {}
@@ -692,7 +692,7 @@ class _GEODE_EXPORT FunctionExecutionException : public Exception {
 /**
  *@brief Thrown if the No locators are active to reply for new connection.
  **/
-class _GEODE_EXPORT NoAvailableLocatorsException : public Exception {
+class APACHE_GEODE_EXPORT NoAvailableLocatorsException : public Exception {
  public:
   using Exception::Exception;
   virtual ~NoAvailableLocatorsException() noexcept {}
@@ -703,7 +703,7 @@ class _GEODE_EXPORT NoAvailableLocatorsException : public Exception {
 /**
  *@brief Thrown if all connections in the pool are in use.
  **/
-class _GEODE_EXPORT AllConnectionsInUseException : public Exception {
+class APACHE_GEODE_EXPORT AllConnectionsInUseException : public Exception {
  public:
   using Exception::Exception;
   virtual ~AllConnectionsInUseException() noexcept {}
@@ -714,7 +714,7 @@ class _GEODE_EXPORT AllConnectionsInUseException : public Exception {
 /**
  *@brief Thrown if Delta could not be applied.
  **/
-class _GEODE_EXPORT InvalidDeltaException : public Exception {
+class APACHE_GEODE_EXPORT InvalidDeltaException : public Exception {
  public:
   using Exception::Exception;
   virtual ~InvalidDeltaException() noexcept {}
@@ -725,7 +725,7 @@ class _GEODE_EXPORT InvalidDeltaException : public Exception {
 /**
  *@brief Thrown if a Key is not present in the region.
  **/
-class _GEODE_EXPORT KeyNotFoundException : public Exception {
+class APACHE_GEODE_EXPORT KeyNotFoundException : public Exception {
  public:
   using Exception::Exception;
   virtual ~KeyNotFoundException() noexcept {}
@@ -737,7 +737,7 @@ class _GEODE_EXPORT KeyNotFoundException : public Exception {
  * @brief This is for all Exceptions that may be thrown
  * by a Geode transaction.
  **/
-class _GEODE_EXPORT TransactionException : public Exception {
+class APACHE_GEODE_EXPORT TransactionException : public Exception {
  public:
   using Exception::Exception;
   virtual ~TransactionException() noexcept {}
@@ -750,7 +750,7 @@ class _GEODE_EXPORT TransactionException : public Exception {
  * has been rolled back or an operation cannot complete because the
  * transaction is marked for rollback only.
  **/
-class _GEODE_EXPORT RollbackException : public Exception {
+class APACHE_GEODE_EXPORT RollbackException : public Exception {
  public:
   using Exception::Exception;
   virtual ~RollbackException() noexcept {}
@@ -762,7 +762,7 @@ class _GEODE_EXPORT RollbackException : public Exception {
  * @brief Thrown when a commit fails due to a write conflict.
  * @see CacheTransactionManager#commit
  **/
-class _GEODE_EXPORT CommitConflictException : public Exception {
+class APACHE_GEODE_EXPORT CommitConflictException : public Exception {
  public:
   using Exception::Exception;
   virtual ~CommitConflictException() noexcept {}
@@ -776,7 +776,7 @@ class _GEODE_EXPORT CommitConflictException : public Exception {
  * being modified by the transaction.
  * This can be thrown while doing transactional operations or during commit.
  **/
-class _GEODE_EXPORT TransactionDataNodeHasDepartedException : public Exception {
+class APACHE_GEODE_EXPORT TransactionDataNodeHasDepartedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~TransactionDataNodeHasDepartedException() noexcept {}
@@ -789,7 +789,7 @@ class _GEODE_EXPORT TransactionDataNodeHasDepartedException : public Exception {
  *transaction.
  * This can be thrown while doing transactional operations or during commit.
  **/
-class _GEODE_EXPORT TransactionDataRebalancedException : public Exception {
+class APACHE_GEODE_EXPORT TransactionDataRebalancedException : public Exception {
  public:
   using Exception::Exception;
   virtual ~TransactionDataRebalancedException() noexcept {}
@@ -801,7 +801,7 @@ class _GEODE_EXPORT TransactionDataRebalancedException : public Exception {
 /**
  * @brief Thrown if putAll operation with single hop succeeded partially.
  **/
-class _GEODE_EXPORT PutAllPartialResultException : public Exception {
+class APACHE_GEODE_EXPORT PutAllPartialResultException : public Exception {
  public:
   using Exception::Exception;
   virtual ~PutAllPartialResultException() noexcept {}
diff --git a/cppcache/include/geode/Execution.hpp b/cppcache/include/geode/Execution.hpp
index 9a55822..8e16d6d 100644
--- a/cppcache/include/geode/Execution.hpp
+++ b/cppcache/include/geode/Execution.hpp
@@ -44,7 +44,7 @@ class FunctionService;
  * gathers results from function execution
  * @see FunctionService
  */
-class _GEODE_EXPORT Execution {
+class APACHE_GEODE_EXPORT Execution {
  public:
   Execution();
   ~Execution() noexcept;
diff --git a/cppcache/include/geode/ExpirationAttributes.hpp b/cppcache/include/geode/ExpirationAttributes.hpp
index 5421267..b919c9f 100644
--- a/cppcache/include/geode/ExpirationAttributes.hpp
+++ b/cppcache/include/geode/ExpirationAttributes.hpp
@@ -47,7 +47,7 @@ namespace client {
  * @see RegionAttributes
  * @see AttributesMutator
  */
-class _GEODE_EXPORT ExpirationAttributes {
+class APACHE_GEODE_EXPORT ExpirationAttributes {
   /**
     * @brief public methods
     */
diff --git a/cppcache/include/geode/FixedPartitionResolver.hpp b/cppcache/include/geode/FixedPartitionResolver.hpp
index 8064786..099f5b1 100644
--- a/cppcache/include/geode/FixedPartitionResolver.hpp
+++ b/cppcache/include/geode/FixedPartitionResolver.hpp
@@ -71,7 +71,7 @@ class EntryEvent;
  * @see PartitionResolver
  *
  */
-class _GEODE_EXPORT FixedPartitionResolver : public PartitionResolver {
+class APACHE_GEODE_EXPORT FixedPartitionResolver : public PartitionResolver {
   /**
   * @brief public methods
   */
diff --git a/cppcache/include/geode/FunctionService.hpp b/cppcache/include/geode/FunctionService.hpp
index 64a9f1a..47d5d41 100644
--- a/cppcache/include/geode/FunctionService.hpp
+++ b/cppcache/include/geode/FunctionService.hpp
@@ -42,7 +42,7 @@ class Execution;
  * entry point for function execution
  * @see Execution
  */
-class _GEODE_EXPORT FunctionService {
+class APACHE_GEODE_EXPORT FunctionService {
  public:
   /**
    * Returns a {@link Execution} object that can be used to execute a data
diff --git a/cppcache/include/geode/GeodeCache.hpp b/cppcache/include/geode/GeodeCache.hpp
index 6c662e1..fe59834 100644
--- a/cppcache/include/geode/GeodeCache.hpp
+++ b/cppcache/include/geode/GeodeCache.hpp
@@ -45,7 +45,7 @@ class DistributedSystem;
  *
  */
 
-class _GEODE_EXPORT GeodeCache : public RegionService {
+class APACHE_GEODE_EXPORT GeodeCache : public RegionService {
   /**
    * @brief public methods
    */
diff --git a/cppcache/include/geode/PartitionResolver.hpp b/cppcache/include/geode/PartitionResolver.hpp
index 560a5d5..210eda5 100644
--- a/cppcache/include/geode/PartitionResolver.hpp
+++ b/cppcache/include/geode/PartitionResolver.hpp
@@ -70,7 +70,7 @@ class EntryEvent;
  * In the example above, all trade entries with the same month and year are
  * guaranteed to be colocated.
  */
-class _GEODE_EXPORT PartitionResolver {
+class APACHE_GEODE_EXPORT PartitionResolver {
   /**
    * @brief public methods
    */
diff --git a/cppcache/include/geode/PdxInstance.hpp b/cppcache/include/geode/PdxInstance.hpp
index e2c01f9..92a91f5 100644
--- a/cppcache/include/geode/PdxInstance.hpp
+++ b/cppcache/include/geode/PdxInstance.hpp
@@ -48,7 +48,7 @@ class CacheableObjectArray;
  * a PDX is done it will deserialize into a PdxInstance. PdxInstance are
  * immutable. If you want to change one call {@link #createWriter}.
  */
-class _GEODE_EXPORT PdxInstance : public PdxSerializable {
+class APACHE_GEODE_EXPORT PdxInstance : public PdxSerializable {
  public:
   /**
    * @brief destructor
diff --git a/cppcache/include/geode/PdxInstanceFactory.hpp b/cppcache/include/geode/PdxInstanceFactory.hpp
index 3db1d64..c9d45a3 100644
--- a/cppcache/include/geode/PdxInstanceFactory.hpp
+++ b/cppcache/include/geode/PdxInstanceFactory.hpp
@@ -41,7 +41,7 @@ namespace client {
  * multiple factories or use {@link PdxInstance#createWriter} to create
  * subsequent instances.
  */
-class _GEODE_EXPORT PdxInstanceFactory {
+class APACHE_GEODE_EXPORT PdxInstanceFactory {
  public:
   /**
    * @brief destructor
diff --git a/cppcache/include/geode/PdxReader.hpp b/cppcache/include/geode/PdxReader.hpp
index 780ad54..f3575b2 100644
--- a/cppcache/include/geode/PdxReader.hpp
+++ b/cppcache/include/geode/PdxReader.hpp
@@ -54,7 +54,7 @@ class CacheableDate;
  * @note Custom implementations of PdxReader are not subject
  *       to this restriction.
  */
-class _GEODE_EXPORT PdxReader {
+class APACHE_GEODE_EXPORT PdxReader {
  public:
   /**
    * @brief constructors
diff --git a/cppcache/include/geode/PdxSerializable.hpp b/cppcache/include/geode/PdxSerializable.hpp
index 04242be..018d375 100644
--- a/cppcache/include/geode/PdxSerializable.hpp
+++ b/cppcache/include/geode/PdxSerializable.hpp
@@ -36,7 +36,7 @@ class PdxWriter;
 class DataInput;
 class DataOutput;
 
-class _GEODE_EXPORT PdxSerializable
+class APACHE_GEODE_EXPORT PdxSerializable
     : public CacheableKey,
       public std::enable_shared_from_this<PdxSerializable> {
  public:
diff --git a/cppcache/include/geode/PdxSerializer.hpp b/cppcache/include/geode/PdxSerializer.hpp
index 3a89f91..e458d1a 100644
--- a/cppcache/include/geode/PdxSerializer.hpp
+++ b/cppcache/include/geode/PdxSerializer.hpp
@@ -43,7 +43,7 @@ using UserObjectSizer = std::function<size_t(const std::shared_ptr<const void>&,
  * Serializable::registerPdxSerializer} to create new
  * instance of type for de-serilization.
  */
-class _GEODE_EXPORT PdxSerializer {
+class APACHE_GEODE_EXPORT PdxSerializer {
  public:
   PdxSerializer() {}
 
diff --git a/cppcache/include/geode/PdxUnreadFields.hpp b/cppcache/include/geode/PdxUnreadFields.hpp
index 785fca3..38541eb 100644
--- a/cppcache/include/geode/PdxUnreadFields.hpp
+++ b/cppcache/include/geode/PdxUnreadFields.hpp
@@ -40,7 +40,7 @@ namespace client {
  * This should only happen when a domain class has changed by adding or removing
  *one or more fields.
  **/
-class _GEODE_EXPORT PdxUnreadFields {
+class APACHE_GEODE_EXPORT PdxUnreadFields {
  public:
   PdxUnreadFields() {}
   virtual ~PdxUnreadFields() {}
diff --git a/cppcache/include/geode/PdxWrapper.hpp b/cppcache/include/geode/PdxWrapper.hpp
index 8e507d3..341fe75 100644
--- a/cppcache/include/geode/PdxWrapper.hpp
+++ b/cppcache/include/geode/PdxWrapper.hpp
@@ -43,7 +43,7 @@ class PdxWriter;
  * A user domain object should be wrapped in an instance of a PdxWrapper with
  * a PdxSerializer registered that can handle the user domain class.
  */
-class _GEODE_EXPORT PdxWrapper : public PdxSerializable {
+class APACHE_GEODE_EXPORT PdxWrapper : public PdxSerializable {
 
  public:
   /**
diff --git a/cppcache/include/geode/PdxWriter.hpp b/cppcache/include/geode/PdxWriter.hpp
index 3bc50f4..3aae1e3 100644
--- a/cppcache/include/geode/PdxWriter.hpp
+++ b/cppcache/include/geode/PdxWriter.hpp
@@ -36,7 +36,7 @@ class PdxUnreadFields;
  * member
  * fields using this abstract class. This class is implemented by Native Client.
  */
-class _GEODE_EXPORT PdxWriter {
+class APACHE_GEODE_EXPORT PdxWriter {
  public:
   /**
    * @brief constructors
diff --git a/cppcache/include/geode/PersistenceManager.hpp b/cppcache/include/geode/PersistenceManager.hpp
index 867528a..37bd8d1 100644
--- a/cppcache/include/geode/PersistenceManager.hpp
+++ b/cppcache/include/geode/PersistenceManager.hpp
@@ -49,7 +49,7 @@ typedef std::shared_ptr<PersistenceManager> (*getPersistenceManagerInstance)(
  * A specific disk storage implementation will implement all the methods
  * described here.
  */
-class _GEODE_EXPORT PersistenceManager {
+class APACHE_GEODE_EXPORT PersistenceManager {
  public:
   static constexpr char const* MAX_PAGE_COUNT = "MaxPageCount";
   static constexpr char const* PAGE_SIZE = "PageSize";
diff --git a/cppcache/include/geode/Pool.hpp b/cppcache/include/geode/Pool.hpp
index 47d6e98..5345f2f 100644
--- a/cppcache/include/geode/Pool.hpp
+++ b/cppcache/include/geode/Pool.hpp
@@ -60,7 +60,7 @@ class QueryService;
  *
  *
  */
-class _GEODE_EXPORT Pool : public std::enable_shared_from_this<Pool> {
+class APACHE_GEODE_EXPORT Pool : public std::enable_shared_from_this<Pool> {
  public:
   /**
    * Gets the name of the connection pool
diff --git a/cppcache/include/geode/PoolFactory.hpp b/cppcache/include/geode/PoolFactory.hpp
index 990acf9..de8f7a5 100644
--- a/cppcache/include/geode/PoolFactory.hpp
+++ b/cppcache/include/geode/PoolFactory.hpp
@@ -65,7 +65,7 @@ class Pool;
  * </ul>
  *
  */
-class _GEODE_EXPORT PoolFactory {
+class APACHE_GEODE_EXPORT PoolFactory {
  public:
   /**
    * The default amount of time which we will wait for a free connection if max
diff --git a/cppcache/include/geode/PoolManager.hpp b/cppcache/include/geode/PoolManager.hpp
index 8ba9112..ed3c112 100644
--- a/cppcache/include/geode/PoolManager.hpp
+++ b/cppcache/include/geode/PoolManager.hpp
@@ -59,7 +59,7 @@ typedef std::unordered_map<std::string, std::shared_ptr<Pool>> HashMapOfPools;
  *
  *
  */
-class _GEODE_EXPORT PoolManager {
+class APACHE_GEODE_EXPORT PoolManager {
  public:
 
   /**
diff --git a/cppcache/include/geode/Properties.hpp b/cppcache/include/geode/Properties.hpp
index 4b09fb2..380a072 100644
--- a/cppcache/include/geode/Properties.hpp
+++ b/cppcache/include/geode/Properties.hpp
@@ -47,7 +47,7 @@ class CacheableString;
  * Contains a set of (key, value) pair properties with key being the name of
  * the property; value, the value of the property.
  */
-class _GEODE_EXPORT Properties : public Serializable {
+class APACHE_GEODE_EXPORT Properties : public Serializable {
  public:
   class Visitor {
    public:
diff --git a/cppcache/include/geode/Query.hpp b/cppcache/include/geode/Query.hpp
index 5399fb0..885e8b4 100644
--- a/cppcache/include/geode/Query.hpp
+++ b/cppcache/include/geode/Query.hpp
@@ -46,7 +46,7 @@ namespace client {
  * operate on the same <code>Query</code> object concurrently rather should
  * have their own <code>Query</code> objects.
  */
-class _GEODE_EXPORT Query {
+class APACHE_GEODE_EXPORT Query {
  public:
   /**
    * Executes the OQL Query on the cache server and returns the results.
diff --git a/cppcache/include/geode/QueryService.hpp b/cppcache/include/geode/QueryService.hpp
index a03132a..aae0148 100644
--- a/cppcache/include/geode/QueryService.hpp
+++ b/cppcache/include/geode/QueryService.hpp
@@ -45,7 +45,7 @@ namespace client {
  * A Query is created from a QueryService and executed on the server
  * returning a SelectResults which can be either a ResultSet or a StructSet.
  */
-class _GEODE_EXPORT QueryService {
+class APACHE_GEODE_EXPORT QueryService {
  public:
   typedef std::vector<std::shared_ptr<CqQuery>> query_container_type;
 
diff --git a/cppcache/include/geode/Region.hpp b/cppcache/include/geode/Region.hpp
index 97158bb..b1928f8 100644
--- a/cppcache/include/geode/Region.hpp
+++ b/cppcache/include/geode/Region.hpp
@@ -94,7 +94,7 @@ static constexpr std::chrono::milliseconds DEFAULT_RESPONSE_TIMEOUT =
  *
  * @see RegionAttributes
  */
-class _GEODE_EXPORT Region : public std::enable_shared_from_this<Region> {
+class APACHE_GEODE_EXPORT Region : public std::enable_shared_from_this<Region> {
   /** @brief Public Methods
    */
  public:
diff --git a/cppcache/include/geode/RegionAttributes.hpp b/cppcache/include/geode/RegionAttributes.hpp
index b5158a7..97a8f9e 100644
--- a/cppcache/include/geode/RegionAttributes.hpp
+++ b/cppcache/include/geode/RegionAttributes.hpp
@@ -73,7 +73,7 @@ class AttributesMutator;
 class Cache;
 class Region;
 
-class _GEODE_EXPORT RegionAttributes : public Serializable {
+class APACHE_GEODE_EXPORT RegionAttributes : public Serializable {
   /**
    * @brief public static methods
    */
diff --git a/cppcache/include/geode/RegionAttributesFactory.hpp b/cppcache/include/geode/RegionAttributesFactory.hpp
index d067130..42f294a 100644
--- a/cppcache/include/geode/RegionAttributesFactory.hpp
+++ b/cppcache/include/geode/RegionAttributesFactory.hpp
@@ -153,7 +153,7 @@ namespace client {
  * @see Region#createSubregion(String, RegionAttributes)
  */
 
-class _GEODE_EXPORT RegionAttributesFactory {
+class APACHE_GEODE_EXPORT RegionAttributesFactory {
   /**
    * @brief public methods
    */
diff --git a/cppcache/include/geode/RegionEntry.hpp b/cppcache/include/geode/RegionEntry.hpp
index e5ea525..93bc738 100644
--- a/cppcache/include/geode/RegionEntry.hpp
+++ b/cppcache/include/geode/RegionEntry.hpp
@@ -47,7 +47,7 @@ class Region;
  * invocation, or an <code>EntryDestroyedException</code> if the entry has been
  * destroyed.
  */
-class _GEODE_EXPORT RegionEntry {
+class APACHE_GEODE_EXPORT RegionEntry {
  public:
   /** Returns the key for this entry.
    *
diff --git a/cppcache/include/geode/RegionEvent.hpp b/cppcache/include/geode/RegionEvent.hpp
index 834cca5..5430b30 100644
--- a/cppcache/include/geode/RegionEvent.hpp
+++ b/cppcache/include/geode/RegionEvent.hpp
@@ -34,7 +34,7 @@ namespace client {
 /**
  * Declares region events.
  */
-class _GEODE_EXPORT RegionEvent {
+class APACHE_GEODE_EXPORT RegionEvent {
  protected:
   const std::shared_ptr<Region> m_region; /**< Region for this event. */
   const std::shared_ptr<Serializable>
diff --git a/cppcache/include/geode/RegionFactory.hpp b/cppcache/include/geode/RegionFactory.hpp
index ab85c31..9ea5a76 100644
--- a/cppcache/include/geode/RegionFactory.hpp
+++ b/cppcache/include/geode/RegionFactory.hpp
@@ -34,7 +34,7 @@ namespace apache {
 namespace geode {
 namespace client {
 class CacheImpl;
-class _GEODE_EXPORT RegionFactory {
+class APACHE_GEODE_EXPORT RegionFactory {
  public:
   RegionFactory() = delete;
   ~RegionFactory() = default;
diff --git a/cppcache/include/geode/RegionService.hpp b/cppcache/include/geode/RegionService.hpp
index 2cbf0e7..227f24a 100644
--- a/cppcache/include/geode/RegionService.hpp
+++ b/cppcache/include/geode/RegionService.hpp
@@ -58,7 +58,7 @@ class PdxInstanceFactory;
  *
  */
 
-class _GEODE_EXPORT RegionService {
+class APACHE_GEODE_EXPORT RegionService {
   /**
    * @brief public methods
    */
diff --git a/cppcache/include/geode/ResultCollector.hpp b/cppcache/include/geode/ResultCollector.hpp
index aa29af5..41ab82f 100644
--- a/cppcache/include/geode/ResultCollector.hpp
+++ b/cppcache/include/geode/ResultCollector.hpp
@@ -62,7 +62,7 @@ namespace client {
  * @see FunctionService
  */
 
-class _GEODE_EXPORT ResultCollector {
+class APACHE_GEODE_EXPORT ResultCollector {
   /**
    * @brief public methods
    */
diff --git a/cppcache/include/geode/ResultSet.hpp b/cppcache/include/geode/ResultSet.hpp
index 156b69c..47f3644 100644
--- a/cppcache/include/geode/ResultSet.hpp
+++ b/cppcache/include/geode/ResultSet.hpp
@@ -38,7 +38,7 @@ namespace client {
  * A ResultSet may be obtained after executing a Query which is obtained from a
  * QueryService which in turn is obtained from a Cache.
  */
-class _GEODE_EXPORT ResultSet : public SelectResults {
+class APACHE_GEODE_EXPORT ResultSet : public SelectResults {
  public:
   /**
    * Check whether the ResultSet is modifiable.
diff --git a/cppcache/include/geode/SelectResults.hpp b/cppcache/include/geode/SelectResults.hpp
index f5916c1..7dbec5b 100644
--- a/cppcache/include/geode/SelectResults.hpp
+++ b/cppcache/include/geode/SelectResults.hpp
@@ -41,7 +41,7 @@ class SelectResultsIterator;
  * A SelectResults is obtained by executing a Query on the server.
  * This can either be a ResultSet or a StructSet.
  */
-class _GEODE_EXPORT SelectResults {
+class APACHE_GEODE_EXPORT SelectResults {
  public:
   virtual ~SelectResults() = default;
 
diff --git a/cppcache/include/geode/SelectResultsIterator.hpp b/cppcache/include/geode/SelectResultsIterator.hpp
index 323b4c9..dc67a87 100644
--- a/cppcache/include/geode/SelectResultsIterator.hpp
+++ b/cppcache/include/geode/SelectResultsIterator.hpp
@@ -49,7 +49,7 @@ class Serializable;
  * A SelectResultsIterator is obtained from a ResultSet or StructSet and
  * is used to iterate over the items available in them.
  */
-class _GEODE_EXPORT SelectResultsIterator {
+class APACHE_GEODE_EXPORT SelectResultsIterator {
  public:
   /**
    * Check whether the SelectResultsIterator has another item to get.
diff --git a/cppcache/include/geode/Serializable.hpp b/cppcache/include/geode/Serializable.hpp
index e769c97..622cd4a 100644
--- a/cppcache/include/geode/Serializable.hpp
+++ b/cppcache/include/geode/Serializable.hpp
@@ -54,7 +54,7 @@ using TypeFactoryMethodPdx = std::function<std::shared_ptr<PdxSerializable>()>;
  * This abstract base class is the superclass of all user objects
  * in the cache that can be serialized.
  */
-class _GEODE_EXPORT Serializable {
+class APACHE_GEODE_EXPORT Serializable {
  public:
   /**
    *@brief serialize this object
diff --git a/cppcache/include/geode/Struct.hpp b/cppcache/include/geode/Struct.hpp
index 3671f39..9d2bb0c 100644
--- a/cppcache/include/geode/Struct.hpp
+++ b/cppcache/include/geode/Struct.hpp
@@ -45,7 +45,7 @@ class StructSet;
  * returned after executing a Query obtained from a QueryService which in turn
  * is obtained from a Cache.
  */
-class _GEODE_EXPORT Struct : public Serializable {
+class APACHE_GEODE_EXPORT Struct : public Serializable {
  public:
   /**
    * Constructor - meant only for internal use.
diff --git a/cppcache/include/geode/StructSet.hpp b/cppcache/include/geode/StructSet.hpp
index 70372db..a5c708a 100644
--- a/cppcache/include/geode/StructSet.hpp
+++ b/cppcache/include/geode/StructSet.hpp
@@ -40,7 +40,7 @@ namespace client {
  * QueryService which in turn is obtained from a Cache.
  * It is the parent of a Struct which contains the field values.
  */
-class _GEODE_EXPORT StructSet : public CqResults {
+class APACHE_GEODE_EXPORT StructSet : public CqResults {
  public:
   /**
    * Check whether the StructSet is modifiable.
diff --git a/cppcache/include/geode/SystemProperties.hpp b/cppcache/include/geode/SystemProperties.hpp
index 7a5d85b..7663174 100644
--- a/cppcache/include/geode/SystemProperties.hpp
+++ b/cppcache/include/geode/SystemProperties.hpp
@@ -41,7 +41,7 @@ namespace client {
  * set from DistributedSystem::connect.
  *
  */
-class _GEODE_EXPORT SystemProperties {
+class APACHE_GEODE_EXPORT SystemProperties {
  public:
   /**
    * Constructor. Will set the default values first, and then overwrite with
diff --git a/cppcache/include/geode/TransactionId.hpp b/cppcache/include/geode/TransactionId.hpp
index 5287a9e..01ec791 100644
--- a/cppcache/include/geode/TransactionId.hpp
+++ b/cppcache/include/geode/TransactionId.hpp
@@ -33,7 +33,7 @@ namespace client {
 * @see Cache#getCacheTransactionManager
 * @see CacheTransactionManager#getTransactionId
 */
-class _GEODE_EXPORT TransactionId {
+class APACHE_GEODE_EXPORT TransactionId {
  public:
   TransactionId();
   virtual ~TransactionId();
diff --git a/cppcache/include/geode/TypeRegistry.hpp b/cppcache/include/geode/TypeRegistry.hpp
index 1056c3f..d372e74 100644
--- a/cppcache/include/geode/TypeRegistry.hpp
+++ b/cppcache/include/geode/TypeRegistry.hpp
@@ -32,7 +32,7 @@ namespace client {
 class CacheImpl;
 class PdxSerializer;
 
-class _GEODE_EXPORT TypeRegistry {
+class APACHE_GEODE_EXPORT TypeRegistry {
  public:
   TypeRegistry(CacheImpl* cache);
 
diff --git a/cppcache/include/geode/UserFunctionExecutionException.hpp b/cppcache/include/geode/UserFunctionExecutionException.hpp
index 94e9d70..fe9ff1e 100644
--- a/cppcache/include/geode/UserFunctionExecutionException.hpp
+++ b/cppcache/include/geode/UserFunctionExecutionException.hpp
@@ -38,7 +38,7 @@ class DataOutput;
  * @brief UserFunctionExecutionException class is used to encapsulate geode
  * sendException in case of Function execution.
  */
-class UserFunctionExecutionException : public Serializable {
+class APACHE_GEODE_EXPORT UserFunctionExecutionException : public Serializable {
  public:
   explicit UserFunctionExecutionException(std::string message)
       : m_message(std::move(message)) {}
diff --git a/cppcache/include/geode/WritablePdxInstance.hpp b/cppcache/include/geode/WritablePdxInstance.hpp
index 2fdfa5b..3106b4d 100644
--- a/cppcache/include/geode/WritablePdxInstance.hpp
+++ b/cppcache/include/geode/WritablePdxInstance.hpp
@@ -37,7 +37,7 @@ class CacheableObjectArray;
  * using the {@link #setField} method.
  * To get a WritablePdxInstance call {@link PdxInstance#createWriter}.
  */
-class _GEODE_EXPORT WritablePdxInstance : public PdxInstance {
+class APACHE_GEODE_EXPORT WritablePdxInstance : public PdxInstance {
  public:
   /**
    * @brief destructor
diff --git a/cppcache/include/geode/internal/CacheableKeys.hpp b/cppcache/include/geode/internal/CacheableKeys.hpp
index 5e0cae3..22e8be3 100644
--- a/cppcache/include/geode/internal/CacheableKeys.hpp
+++ b/cppcache/include/geode/internal/CacheableKeys.hpp
@@ -1,8 +1,3 @@
-#pragma once
-
-#ifndef GEODE_CACHEABLEKEYS_H_
-#define GEODE_CACHEABLEKEYS_H_
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -20,6 +15,11 @@
  * limitations under the License.
  */
 
+#pragma once
+
+#ifndef GEODE_CACHEABLEKEYS_H_
+#define GEODE_CACHEABLEKEYS_H_
+
 #include "geode_globals.hpp"
 
 namespace apache {
@@ -75,7 +75,7 @@ inline int32_t hashcode(const double value) {
   v.d = value;
   return hashcode(v.u);
 }
-}  // namespace serializer
+}  // namespace internal
 }  // namespace client
 }  // namespace geode
 }  // namespace apache
diff --git a/cppcache/include/geode/internal/geode_base.hpp b/cppcache/include/geode/internal/geode_base.hpp
index ecb86f5..8a6707f 100644
--- a/cppcache/include/geode/internal/geode_base.hpp
+++ b/cppcache/include/geode/internal/geode_base.hpp
@@ -20,36 +20,7 @@
 #ifndef GEODE_BASE_H_
 #define GEODE_BASE_H_
 
-#if defined(WIN32)
-/** Library Export */
-#define _GEODE_LIBEXP __declspec(dllexport)
-/** Library Implementation */
-#define _GEODE_LIBIMP __declspec(dllimport)
-/** Library Call */
-#define _GEODE_LIBCALL __stdcall
-/** Library Export a type */
-#define _GEODE_LIBEXPORT(type) _GEODE_LIBEXP type _GEODE_LIBCALL
-#else
-/** Library Export */
-#define _GEODE_LIBEXP
-/** Library Implementation */
-#define _GEODE_LIBIMP extern
-/** Library Call */
-#define _GEODE_LIBCALL /**/
-/** Library Export a type */
-#define _GEODE_LIBEXPORT(type) type
-#endif
-
-/** Defines a Geode export */
-#if defined(WIN32)
-#ifdef BUILD_CPPCACHE
-#define _GEODE_EXPORT _GEODE_LIBEXP
-#else
-#define _GEODE_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define _GEODE_EXPORT
-#endif /* BUILD_CPPCACHE */
+#include "apache-geode_export.h"
 
 /**@namespace geode This namespace contains all the Geode
  * C++ API classes, enumerations and globals.
diff --git a/cppcache/shared/CMakeLists.txt b/cppcache/shared/CMakeLists.txt
index bac2a1d..6454006 100644
--- a/cppcache/shared/CMakeLists.txt
+++ b/cppcache/shared/CMakeLists.txt
@@ -16,33 +16,44 @@
 cmake_minimum_required(VERSION 3.4)
 project(apache-geode LANGUAGES CXX)
 
-add_library(${PROJECT_NAME} SHARED ${SOURCES_ALL} ${RESOURCES})
+add_library(apache-geode SHARED ${SOURCES_ALL} ${RESOURCES})
+
+if (WIN32)
+  set(EXPORT_HEADER_CUSTOM_CONTENT "#define APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT APACHE_GEODE_EXPORT")
+else()
+  set(EXPORT_HEADER_CUSTOM_CONTENT "#define APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT")
+endif()
+include(GenerateExportHeader)
+generate_export_header(apache-geode 
+  EXPORT_FILE_NAME ${EXPORT_FILE_NAME}
+  CUSTOM_CONTENT_FROM_VARIABLE EXPORT_HEADER_CUSTOM_CONTENT)
 
 set_source_files_properties(${CONFIGURE_OUT_FILES} PROPERTIES GENERATED TRUE)
 
-target_link_libraries(${PROJECT_NAME}
+target_link_libraries(apache-geode
   PRIVATE
     _apache-geode
     _WarningsAsError
   PUBLIC
     c++11)
 
-target_include_directories(${PROJECT_NAME}
+target_include_directories(apache-geode
   PUBLIC
     $<TARGET_PROPERTY:_apache-geode,INTERFACE_INCLUDE_DIRECTORIES>)
 
 set_target_properties(apache-geode PROPERTIES
   PUBLIC_HEADER "${PUBLIC_HEADERS}"
-  OUTPUT_NAME ${PRODUCT_LIB_NAME})
+  OUTPUT_NAME ${PRODUCT_LIB_NAME}
+  CXX_VISIBILITY_PRESET hidden
+  VISIBILITY_INLINES_HIDDEN ON)
 
-add_dependencies(client-libraries ${PROJECT_NAME})
+add_dependencies(client-libraries apache-geode)
 
 install(TARGETS apache-geode
   RUNTIME DESTINATION bin
   LIBRARY DESTINATION lib
   ARCHIVE DESTINATION lib)
 
-
 # BEGIN Visual Studio organization
 source_group("Header Files" REGULAR_EXPRESSION "\.(hpp|inl)$")
 source_group("Configure In Files" FILES ${CONFIGURE_IN_FILES})
@@ -59,7 +70,7 @@ if (USE_PCH)
       ${CMAKE_BINARY_DIR}/dependencies/boost/include/boost/stacktrace.hpp)
   endif()
 
-  set_target_properties(${PROJECT_NAME} PROPERTIES
+  set_target_properties(apache-geode PROPERTIES
     COTIRE_ENABLE_PRECOMPILED_HEADER TRUE
     COTIRE_ADD_UNITY_BUILD TRUE
     COTIRE_PREFIX_HEADER_IGNORE_PATH "${_COTIRE_PREFIX_HEADER_IGNORE_PATH}"
@@ -67,5 +78,5 @@ if (USE_PCH)
 
   set_source_files_properties(cppcache/version.h PROPERTIES GENERATED TRUE)
 
-  cotire(${PROJECT_NAME})
+  cotire(apache-geode)
 endif()
diff --git a/cppcache/src/Assert.hpp b/cppcache/src/Assert.hpp
index e3c09b6..3c8f0fb 100644
--- a/cppcache/src/Assert.hpp
+++ b/cppcache/src/Assert.hpp
@@ -37,7 +37,7 @@ namespace client {
  *
  * Declares debugging assertion reporting functions.
  */
-class _GEODE_EXPORT Assert {
+class APACHE_GEODE_EXPORT Assert {
  public:
   /** If the given expression is true, does nothing, otherwise calls
   * @ref throwAssertion .
diff --git a/cppcache/src/CacheConfig.hpp b/cppcache/src/CacheConfig.hpp
index 78c142b..e73cd71 100644
--- a/cppcache/src/CacheConfig.hpp
+++ b/cppcache/src/CacheConfig.hpp
@@ -53,7 +53,7 @@ namespace client {
 
 typedef std::map<std::string, std::shared_ptr<RegionConfig>> RegionConfigMapT;
 
-class _GEODE_EXPORT CacheConfig {
+class APACHE_GEODE_EXPORT CacheConfig {
  public:
   CacheConfig(const char* xmlFileName);
 
diff --git a/cppcache/src/CacheImpl.hpp b/cppcache/src/CacheImpl.hpp
index d0d9203..c39c529 100644
--- a/cppcache/src/CacheImpl.hpp
+++ b/cppcache/src/CacheImpl.hpp
@@ -85,7 +85,7 @@ class SerializationRegistry;
  *
  */
 
-class _GEODE_EXPORT CacheImpl : private NonCopyable, private NonAssignable {
+class APACHE_GEODE_EXPORT CacheImpl : private NonCopyable, private NonAssignable {
   /**
    * @brief public methods
    */
diff --git a/cppcache/src/CachePerfStats.hpp b/cppcache/src/CachePerfStats.hpp
index 17a7170..32614ee 100644
--- a/cppcache/src/CachePerfStats.hpp
+++ b/cppcache/src/CachePerfStats.hpp
@@ -34,7 +34,7 @@ namespace client {
 using namespace apache::geode::statistics;
 
 /** hold statistics for cache.. */
-class _GEODE_EXPORT CachePerfStats {
+class APACHE_GEODE_EXPORT CachePerfStats {
  public:
   CachePerfStats(StatisticsFactory* factory) {
     auto statsType = factory->findType("CachePerfStats");
diff --git a/cppcache/src/CacheRegionHelper.hpp b/cppcache/src/CacheRegionHelper.hpp
index 70692f0..887cebf 100644
--- a/cppcache/src/CacheRegionHelper.hpp
+++ b/cppcache/src/CacheRegionHelper.hpp
@@ -30,7 +30,7 @@ namespace client {
 class CacheImpl;
 class AuthenticatedView;
 
-class _GEODE_EXPORT CacheRegionHelper {
+class APACHE_GEODE_EXPORT CacheRegionHelper {
   /**
    * CacheHelper
    *
diff --git a/cppcache/src/CacheXml.hpp b/cppcache/src/CacheXml.hpp
index 6265524..c614538 100644
--- a/cppcache/src/CacheXml.hpp
+++ b/cppcache/src/CacheXml.hpp
@@ -26,7 +26,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT CacheXml {
+class APACHE_GEODE_EXPORT CacheXml {
  public:
   /** The name of the <code>cache</code> element */
   const char* CACHE;
diff --git a/cppcache/src/CacheXmlCreation.hpp b/cppcache/src/CacheXmlCreation.hpp
index fb9ab31..fa6d7b5 100644
--- a/cppcache/src/CacheXmlCreation.hpp
+++ b/cppcache/src/CacheXmlCreation.hpp
@@ -37,7 +37,7 @@ class Cache;
  * @since 1.0
  */
 
-class _GEODE_EXPORT CacheXmlCreation {
+class APACHE_GEODE_EXPORT CacheXmlCreation {
  public:
   /**
    * Creates a new <code>CacheXmlCreation</code> with no root region
diff --git a/cppcache/src/CacheXmlParser.hpp b/cppcache/src/CacheXmlParser.hpp
index fc0d2ea..0798d4f 100644
--- a/cppcache/src/CacheXmlParser.hpp
+++ b/cppcache/src/CacheXmlParser.hpp
@@ -53,7 +53,7 @@ typedef CacheWriter* (*LibraryCacheWriterFn)(const char* assemblyPath,
 typedef PersistenceManager* (*LibraryPersistenceManagerFn)(
     const char* assemblyPath, const char* factFuncName);
 
-class _GEODE_EXPORT CacheXmlParser : public CacheXml {
+class APACHE_GEODE_EXPORT CacheXmlParser : public CacheXml {
  private:
   std::stack<std::shared_ptr<void>> _stack;
   xmlSAXHandler m_saxHandler;
diff --git a/cppcache/src/CacheableBuiltins.cpp b/cppcache/src/CacheableBuiltins.cpp
index b094018..02dec3f 100644
--- a/cppcache/src/CacheableBuiltins.cpp
+++ b/cppcache/src/CacheableBuiltins.cpp
@@ -15,30 +15,22 @@
  * limitations under the License.
  */
 
-#define __STDC_FORMAT_MACROS
-#include <inttypes.h>
-
-#include <ace/OS.h>
-
-#include <geode/internal/geode_globals.hpp>
 #include <geode/CacheableBuiltins.hpp>
 
 namespace apache {
 namespace geode {
 namespace client {
 
-#define _GF_CACHEABLE_KEY_DEF_(k, s) \
-  const char tName_##k[] = #k;       \
-  const char tStr_##k[] = s;
+#define _GF_CACHEABLE_KEY_DEF_(k) const char tName_##k[] = #k;
 
-_GF_CACHEABLE_KEY_DEF_(CacheableBoolean, "%" PRIi8);
-_GF_CACHEABLE_KEY_DEF_(CacheableByte, "%" PRIi8);
-_GF_CACHEABLE_KEY_DEF_(CacheableDouble, "%lf");
-_GF_CACHEABLE_KEY_DEF_(CacheableFloat, "%f");
-_GF_CACHEABLE_KEY_DEF_(CacheableInt16, "%" PRIi16);
-_GF_CACHEABLE_KEY_DEF_(CacheableInt32, "%" PRIi32);
-_GF_CACHEABLE_KEY_DEF_(CacheableInt64, "%" PRIi64);
-_GF_CACHEABLE_KEY_DEF_(CacheableCharacter, "%lc");
+_GF_CACHEABLE_KEY_DEF_(CacheableBoolean);
+_GF_CACHEABLE_KEY_DEF_(CacheableByte);
+_GF_CACHEABLE_KEY_DEF_(CacheableDouble);
+_GF_CACHEABLE_KEY_DEF_(CacheableFloat);
+_GF_CACHEABLE_KEY_DEF_(CacheableInt16);
+_GF_CACHEABLE_KEY_DEF_(CacheableInt32);
+_GF_CACHEABLE_KEY_DEF_(CacheableInt64);
+_GF_CACHEABLE_KEY_DEF_(CacheableCharacter);
 }  // namespace client
 }  // namespace geode
 }  // namespace apache
diff --git a/cppcache/src/CacheableToken.hpp b/cppcache/src/CacheableToken.hpp
index 6821c84..f762f62 100644
--- a/cppcache/src/CacheableToken.hpp
+++ b/cppcache/src/CacheableToken.hpp
@@ -27,11 +27,11 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT CacheableToken;
+class APACHE_GEODE_EXPORT CacheableToken;
 
 /** Implement a non-mutable int64_t wrapper that can serve as a distributable
  * key object for cacheing as well as being a 64 bit value. */
-class _GEODE_EXPORT CacheableToken : public Cacheable {
+class APACHE_GEODE_EXPORT CacheableToken : public Cacheable {
  private:
   enum TokenType { NOT_USED = 0, INVALID, DESTROYED, OVERFLOWED, TOMBSTONE };
 
diff --git a/cppcache/src/ClientMetadata.hpp b/cppcache/src/ClientMetadata.hpp
index 9b3ec1b..9d80c74 100644
--- a/cppcache/src/ClientMetadata.hpp
+++ b/cppcache/src/ClientMetadata.hpp
@@ -47,7 +47,7 @@ typedef std::vector<std::shared_ptr<BucketServerLocation>>
 typedef std::vector<BucketServerLocationsType> BucketServerLocationsListType;
 typedef std::map<std::string, std::vector<int> > FixedMapType;
 
-class _GEODE_EXPORT ClientMetadata : public NonAssignable {
+class APACHE_GEODE_EXPORT ClientMetadata : public NonAssignable {
  private:
   void setPartitionNames();
   std::shared_ptr<CacheableHashSet> m_partitionNames;
diff --git a/cppcache/src/ConcurrentEntriesMap.hpp b/cppcache/src/ConcurrentEntriesMap.hpp
index 9704c3f..148171b 100644
--- a/cppcache/src/ConcurrentEntriesMap.hpp
+++ b/cppcache/src/ConcurrentEntriesMap.hpp
@@ -36,7 +36,7 @@ class RegionInternal;
 /**
  * @brief Concurrent entries map.
  */
-class _GEODE_EXPORT ConcurrentEntriesMap : public EntriesMap {
+class APACHE_GEODE_EXPORT ConcurrentEntriesMap : public EntriesMap {
  protected:
   ExpiryTaskManager* m_expiryTaskManager;
   uint8_t m_concurrency;
diff --git a/cppcache/src/Condition.hpp b/cppcache/src/Condition.hpp
index c0f4b00..55fb779 100644
--- a/cppcache/src/Condition.hpp
+++ b/cppcache/src/Condition.hpp
@@ -31,7 +31,7 @@ namespace client {
 /**
  * Condition wrapper when you want an absolute signal or timeout condition.
  */
-class _GEODE_EXPORT Condition {
+class APACHE_GEODE_EXPORT Condition {
  private:
   ACE_Condition<ACE_Recursive_Thread_Mutex> m_cond;
   bool m_signaled;
diff --git a/cppcache/src/ConnectCounter.hpp b/cppcache/src/ConnectCounter.hpp
index 80a4e2a..8925c0e 100644
--- a/cppcache/src/ConnectCounter.hpp
+++ b/cppcache/src/ConnectCounter.hpp
@@ -26,7 +26,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT ConnectCounter {
+class APACHE_GEODE_EXPORT ConnectCounter {
  public:
   ConnectCounter();
 
diff --git a/cppcache/src/CppCacheLibrary.hpp b/cppcache/src/CppCacheLibrary.hpp
index 771e376..8f4022e 100644
--- a/cppcache/src/CppCacheLibrary.hpp
+++ b/cppcache/src/CppCacheLibrary.hpp
@@ -28,7 +28,7 @@ namespace geode {
 namespace client {
 
 // initialize GEMFIRE runtime if it has not already been initialized.
-class _GEODE_EXPORT CppCacheLibrary {
+class APACHE_GEODE_EXPORT CppCacheLibrary {
  public:
   // Call to this to trigger initialization.
   static void initLib(void);
diff --git a/cppcache/src/CqAttributesImpl.hpp b/cppcache/src/CqAttributesImpl.hpp
index 7ca4eba..2238342 100644
--- a/cppcache/src/CqAttributesImpl.hpp
+++ b/cppcache/src/CqAttributesImpl.hpp
@@ -47,7 +47,7 @@ namespace client {
  *
  * For compatibility rules and default values, see {@link CqAttributesFactory}.
  */
-class _GEODE_EXPORT CqAttributesImpl : public CqAttributes {
+class APACHE_GEODE_EXPORT CqAttributesImpl : public CqAttributes {
  public:
   listener_container_type getCqListeners() override;
 
diff --git a/cppcache/src/CqAttributesMutatorImpl.hpp b/cppcache/src/CqAttributesMutatorImpl.hpp
index f2a994c..2f367f0 100644
--- a/cppcache/src/CqAttributesMutatorImpl.hpp
+++ b/cppcache/src/CqAttributesMutatorImpl.hpp
@@ -41,7 +41,7 @@ namespace client {
  * of certain CQ attributes after the CQ has been created.
  *
  */
-class _GEODE_EXPORT CqAttributesMutatorImpl : public CqAttributesMutator {
+class APACHE_GEODE_EXPORT CqAttributesMutatorImpl : public CqAttributesMutator {
  public:
   CqAttributesMutatorImpl(const std::shared_ptr<CqAttributes>& impl);
 
diff --git a/cppcache/src/CqQueryVsdStats.hpp b/cppcache/src/CqQueryVsdStats.hpp
index 3f54d51..83a0a72 100644
--- a/cppcache/src/CqQueryVsdStats.hpp
+++ b/cppcache/src/CqQueryVsdStats.hpp
@@ -38,7 +38,7 @@ using statistics::StatisticsType;
 using statistics::Statistics;
 using util::concurrent::spinlock_mutex;
 
-class _GEODE_EXPORT CqQueryVsdStats : public CqStatistics {
+class APACHE_GEODE_EXPORT CqQueryVsdStats : public CqStatistics {
  public:
   /** hold statistics for a cq. */
   CqQueryVsdStats(statistics::StatisticsFactory* factory, const std::string& cqqueryName);
diff --git a/cppcache/src/CqService.hpp b/cppcache/src/CqService.hpp
index 1189076..97be244 100644
--- a/cppcache/src/CqService.hpp
+++ b/cppcache/src/CqService.hpp
@@ -58,7 +58,7 @@ namespace client {
  *
  */
 
-class _GEODE_EXPORT CqService : private NonCopyable,
+class APACHE_GEODE_EXPORT CqService : private NonCopyable,
                                 private NonAssignable,
                                 public std::enable_shared_from_this<CqService> {
  private:
diff --git a/cppcache/src/CqServiceVsdStats.hpp b/cppcache/src/CqServiceVsdStats.hpp
index 3f27ea1..ba31c2c 100644
--- a/cppcache/src/CqServiceVsdStats.hpp
+++ b/cppcache/src/CqServiceVsdStats.hpp
@@ -38,7 +38,7 @@ using statistics::StatisticsType;
 using statistics::Statistics;
 using util::concurrent::spinlock_mutex;
 
-class _GEODE_EXPORT CqServiceVsdStats : public CqServiceStatistics {
+class APACHE_GEODE_EXPORT CqServiceVsdStats : public CqServiceStatistics {
  public:
   /** hold statistics for a cq. */
   CqServiceVsdStats(statistics::StatisticsFactory* factory,
diff --git a/cppcache/src/DataInput.cpp b/cppcache/src/DataInput.cpp
index ee1bda9..15046bc 100644
--- a/cppcache/src/DataInput.cpp
+++ b/cppcache/src/DataInput.cpp
@@ -45,7 +45,8 @@ void DataInput::readJavaModifiedUtf8(
   readJavaModifiedUtf8(utf16);
   value = to_utf8(utf16);
 }
-template _GEODE_EXPORT void DataInput::readJavaModifiedUtf8(std::string&);
+template APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT void
+DataInput::readJavaModifiedUtf8(std::string&);
 
 template <class _Traits, class _Allocator>
 void DataInput::readJavaModifiedUtf8(
@@ -56,7 +57,8 @@ void DataInput::readJavaModifiedUtf8(
       JavaModifiedUtf8::decode(reinterpret_cast<const char*>(m_buf), length);
   advanceCursor(length);
 }
-template _GEODE_EXPORT void DataInput::readJavaModifiedUtf8(std::u16string&);
+template APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT void
+DataInput::readJavaModifiedUtf8(std::u16string&);
 
 template <class _Traits, class _Allocator>
 void DataInput::readJavaModifiedUtf8(
@@ -66,7 +68,8 @@ void DataInput::readJavaModifiedUtf8(
   readJavaModifiedUtf8(utf16);
   value = to_ucs4(utf16);
 }
-template _GEODE_EXPORT void DataInput::readJavaModifiedUtf8(std::u32string&);
+template APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT void
+DataInput::readJavaModifiedUtf8(std::u32string&);
 
 template <class _Traits, class _Allocator>
 void DataInput::readUtf16Huge(
@@ -76,7 +79,8 @@ void DataInput::readUtf16Huge(
   readUtf16Huge(utf16);
   value = to_utf8(utf16);
 }
-template _GEODE_EXPORT void DataInput::readUtf16Huge(std::string&);
+template APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT void DataInput::readUtf16Huge(
+    std::string&);
 
 template <class _Traits, class _Allocator>
 void DataInput::readUtf16Huge(
@@ -86,7 +90,8 @@ void DataInput::readUtf16Huge(
   readUtf16Huge(utf16);
   value = to_ucs4(utf16);
 }
-template _GEODE_EXPORT void DataInput::readUtf16Huge(std::u32string&);
+template APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT void DataInput::readUtf16Huge(
+    std::u32string&);
 
 }  // namespace client
 }  // namespace geode
diff --git a/cppcache/src/DataOutput.cpp b/cppcache/src/DataOutput.cpp
index ef4cab1..8f2b2ff 100644
--- a/cppcache/src/DataOutput.cpp
+++ b/cppcache/src/DataOutput.cpp
@@ -156,8 +156,8 @@ void DataOutput::writeJavaModifiedUtf8(
     writeJavaModifiedUtf8(to_utf16(value));
   }
 }
-template _GEODE_EXPORT void DataOutput::writeJavaModifiedUtf8(
-    const std::string&);
+template APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT void
+DataOutput::writeJavaModifiedUtf8(const std::string&);
 
 template <class _Traits, class _Allocator>
 void DataOutput::writeJavaModifiedUtf8(
@@ -172,8 +172,8 @@ void DataOutput::writeJavaModifiedUtf8(
     writeJavaModifiedUtf8(to_utf16(value));
   }
 }
-template _GEODE_EXPORT void DataOutput::writeJavaModifiedUtf8(
-    const std::u32string&);
+template APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT void
+DataOutput::writeJavaModifiedUtf8(const std::u32string&);
 
 void DataOutput::writeJavaModifiedUtf8(const char32_t* data, size_t len) {
   // TODO string optimize from UCS-4 to jmutf8
@@ -199,7 +199,8 @@ void DataOutput::writeUtf16Huge(
     writeUtf16Huge(to_utf16(value));
   }
 }
-template _GEODE_EXPORT void DataOutput::writeUtf16Huge(const std::string&);
+template APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT void DataOutput::writeUtf16Huge(
+    const std::string&);
 
 template <class _Traits, class _Allocator>
 void DataOutput::writeUtf16Huge(
@@ -211,7 +212,8 @@ void DataOutput::writeUtf16Huge(
     writeUtf16Huge(to_utf16(value));
   }
 }
-template _GEODE_EXPORT void DataOutput::writeUtf16Huge(const std::u32string&);
+template APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT void DataOutput::writeUtf16Huge(
+    const std::u32string&);
 
 void DataOutput::writeUtf16Huge(const char32_t* data, size_t len) {
   // TODO string optimize from UCS-4 to UTF-16
@@ -230,7 +232,8 @@ void DataOutput::writeUtf16(
     writeUtf16(to_utf16(value));
   }
 }
-template _GEODE_EXPORT void DataOutput::writeUtf16(const std::string&);
+template APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT void DataOutput::writeUtf16(
+    const std::string&);
 
 template <class _Traits, class _Allocator>
 void DataOutput::writeUtf16(
@@ -240,7 +243,8 @@ void DataOutput::writeUtf16(
     writeUtf16(to_utf16(value));
   }
 }
-template _GEODE_EXPORT void DataOutput::writeUtf16(const std::u32string&);
+template APACHE_GEODE_EXPLICIT_TEMPLATE_EXPORT void DataOutput::writeUtf16(
+    const std::u32string&);
 
 void DataOutput::writeUtf16(const char32_t* data, size_t len) {
   // TODO string optimize from UCS-4 to UTF-16
diff --git a/cppcache/src/DistributedSystemImpl.hpp b/cppcache/src/DistributedSystemImpl.hpp
index 75abfc6..b5c52d1 100644
--- a/cppcache/src/DistributedSystemImpl.hpp
+++ b/cppcache/src/DistributedSystemImpl.hpp
@@ -54,7 +54,7 @@ class DistributedSystemImpl;
 
 using CliCallbackMethod = std::function<void(Cache&)>;
 
-class _GEODE_EXPORT DistributedSystemImpl {
+class APACHE_GEODE_EXPORT DistributedSystemImpl {
   /**
    * @brief public methods
    */
diff --git a/cppcache/src/EntriesMap.hpp b/cppcache/src/EntriesMap.hpp
index bafa090..7ddfb7c 100644
--- a/cppcache/src/EntriesMap.hpp
+++ b/cppcache/src/EntriesMap.hpp
@@ -40,7 +40,7 @@ namespace client {
 /**
  * @brief Concurrent entries map. Not designed for subclassing...
  */
-class _GEODE_EXPORT EntriesMap {
+class APACHE_GEODE_EXPORT EntriesMap {
  public:
   EntriesMap(std::unique_ptr<EntryFactory> entryFactory) : m_entryFactory(std::move(entryFactory)) {}
   virtual ~EntriesMap() {}
diff --git a/cppcache/src/EntriesMapFactory.hpp b/cppcache/src/EntriesMapFactory.hpp
index cea39ca..9118b15 100644
--- a/cppcache/src/EntriesMapFactory.hpp
+++ b/cppcache/src/EntriesMapFactory.hpp
@@ -28,7 +28,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT EntriesMapFactory {
+class APACHE_GEODE_EXPORT EntriesMapFactory {
  public:
   /** @brief used internally by Region implementation to create the appropriate
    * type of entries map.
diff --git a/cppcache/src/EntryExpiryHandler.hpp b/cppcache/src/EntryExpiryHandler.hpp
index 9fbdbdc..15d0ed8 100644
--- a/cppcache/src/EntryExpiryHandler.hpp
+++ b/cppcache/src/EntryExpiryHandler.hpp
@@ -43,7 +43,7 @@ namespace client {
  * TODO: TODO: cleanup region entry nodes and handlers from expiry task
  * manager when region is destroyed
  */
-class _GEODE_EXPORT EntryExpiryHandler : public ACE_Event_Handler {
+class APACHE_GEODE_EXPORT EntryExpiryHandler : public ACE_Event_Handler {
  public:
   /**
    * Constructor
diff --git a/cppcache/src/EnumInfo.hpp b/cppcache/src/EnumInfo.hpp
index 5f3179e..34cd14b 100644
--- a/cppcache/src/EnumInfo.hpp
+++ b/cppcache/src/EnumInfo.hpp
@@ -28,7 +28,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT EnumInfo : public CacheableKey {
+class APACHE_GEODE_EXPORT EnumInfo : public CacheableKey {
  private:
   std::shared_ptr<CacheableString> m_enumClassName;
   std::shared_ptr<CacheableString> m_enumName;
diff --git a/cppcache/src/EventId.hpp b/cppcache/src/EventId.hpp
index 5de6918..8cb3f4f 100644
--- a/cppcache/src/EventId.hpp
+++ b/cppcache/src/EventId.hpp
@@ -38,7 +38,7 @@ namespace client {
  * EventID "token" with a Distributed Member ID, Thread ID and per-thread
  * Sequence ID
  */
-class _GEODE_EXPORT EventId : public Cacheable {
+class APACHE_GEODE_EXPORT EventId : public Cacheable {
  private:
   char m_eidMem[512];
   int32_t m_eidMemLen;
diff --git a/cppcache/src/EventIdMap.hpp b/cppcache/src/EventIdMap.hpp
index b37e1ef..bfa27c6 100644
--- a/cppcache/src/EventIdMap.hpp
+++ b/cppcache/src/EventIdMap.hpp
@@ -57,7 +57,7 @@ typedef ACE_Guard<ACE_Recursive_Thread_Mutex> MapGuard;
  * provides the operations for duplicate checking and
  * expiry of idle event IDs from notifications.
  */
-class _GEODE_EXPORT EventIdMap {
+class APACHE_GEODE_EXPORT EventIdMap {
  private:
   typedef std::unordered_map<std::shared_ptr<EventSource>,
                              std::shared_ptr<EventSequence>,
@@ -132,7 +132,7 @@ class _GEODE_EXPORT EventIdMap {
  * EventSequence is the combination of SequenceNum from EventId, a timestamp and
  * a flag indicating whether or not it is ACKed
  */
-class _GEODE_EXPORT EventSequence {
+class APACHE_GEODE_EXPORT EventSequence {
   int64_t m_seqNum;
   bool m_acked;
   ACE_Time_Value m_deadline;  // current time plus the expiration delay (age)
diff --git a/cppcache/src/EventSource.hpp b/cppcache/src/EventSource.hpp
index 44f3b61..e38c256 100644
--- a/cppcache/src/EventSource.hpp
+++ b/cppcache/src/EventSource.hpp
@@ -31,7 +31,7 @@ namespace client {
  *
  * EventSource is the combination of MembershipId and ThreadId from the EventId
  */
-class _GEODE_EXPORT EventSource {
+class APACHE_GEODE_EXPORT EventSource {
   char *m_srcId;
   int32_t m_srcIdLen;
   int64_t m_thrId;
diff --git a/cppcache/src/EvictionController.hpp b/cppcache/src/EvictionController.hpp
index 550d810..d792621 100644
--- a/cppcache/src/EvictionController.hpp
+++ b/cppcache/src/EvictionController.hpp
@@ -69,7 +69,7 @@ class EvictionController;
 class EvictionThread;
 class CacheImpl;
 
-class _GEODE_EXPORT EvictionController : public ACE_Task_Base {
+class APACHE_GEODE_EXPORT EvictionController : public ACE_Task_Base {
  public:
   EvictionController(size_t maxHeapSize, int32_t heapSizeDelta,
                      CacheImpl* cache);
diff --git a/cppcache/src/EvictionThread.hpp b/cppcache/src/EvictionThread.hpp
index c2735d7..d2472c2 100644
--- a/cppcache/src/EvictionThread.hpp
+++ b/cppcache/src/EvictionThread.hpp
@@ -37,7 +37,7 @@ namespace client {
 class EvictionController;
 typedef IntQueue<int64_t> HeapSizeInfoQueue;
 
-class _GEODE_EXPORT EvictionThread : public ACE_Task_Base {
+class APACHE_GEODE_EXPORT EvictionThread : public ACE_Task_Base {
  public:
   EvictionThread(EvictionController* parent);
 
diff --git a/cppcache/src/ExpMapEntry.hpp b/cppcache/src/ExpMapEntry.hpp
index 4332da0..00fb31f 100644
--- a/cppcache/src/ExpMapEntry.hpp
+++ b/cppcache/src/ExpMapEntry.hpp
@@ -31,7 +31,7 @@ namespace client {
  * @brief Hold region mapped entry value.
  * This subclass adds expiration times.
  */
-class _GEODE_EXPORT ExpMapEntry : public MapEntryImpl,
+class APACHE_GEODE_EXPORT ExpMapEntry : public MapEntryImpl,
                                   public ExpEntryProperties {
  public:
   virtual ~ExpMapEntry() {}
@@ -59,7 +59,7 @@ class _GEODE_EXPORT ExpMapEntry : public MapEntryImpl,
   ExpMapEntry& operator=(const ExpMapEntry&);
 };
 
-class _GEODE_EXPORT VersionedExpMapEntry : public ExpMapEntry,
+class APACHE_GEODE_EXPORT VersionedExpMapEntry : public ExpMapEntry,
                                            public VersionStamp {
  public:
   virtual ~VersionedExpMapEntry() {}
@@ -79,7 +79,7 @@ class _GEODE_EXPORT VersionedExpMapEntry : public ExpMapEntry,
   VersionedExpMapEntry& operator=(const VersionedExpMapEntry&);
 };
 
-class _GEODE_EXPORT ExpEntryFactory : public EntryFactory {
+class APACHE_GEODE_EXPORT ExpEntryFactory : public EntryFactory {
  public:
   using EntryFactory::EntryFactory;
 
diff --git a/cppcache/src/ExpiryHandler_T.hpp b/cppcache/src/ExpiryHandler_T.hpp
index a17a989..34665c2 100644
--- a/cppcache/src/ExpiryHandler_T.hpp
+++ b/cppcache/src/ExpiryHandler_T.hpp
@@ -37,7 +37,7 @@ namespace client {
  * since GF_Timer_Heap_ImmediateReset_T also deletes handlers that expire
  */
 template <class T>
-class _GEODE_EXPORT ExpiryHandler_T : public ACE_Event_Handler {
+class APACHE_GEODE_EXPORT ExpiryHandler_T : public ACE_Event_Handler {
  public:
   /// Handle timeout events.
   typedef int (T::*TO_HANDLER)(const ACE_Time_Value &, const void *);
diff --git a/cppcache/src/ExpiryTaskManager.hpp b/cppcache/src/ExpiryTaskManager.hpp
index 52e8d0a..908f943 100644
--- a/cppcache/src/ExpiryTaskManager.hpp
+++ b/cppcache/src/ExpiryTaskManager.hpp
@@ -48,7 +48,7 @@ using namespace apache::geode::internal::chrono::duration;
  * This class starts a reactor's event loop for taking care of expiry
  * tasks. The scheduling of event also happens through this manager.
  */
-class _GEODE_EXPORT ExpiryTaskManager : public ACE_Task_Base {
+class APACHE_GEODE_EXPORT ExpiryTaskManager : public ACE_Task_Base {
  public:
   typedef long id_type;
   /**
@@ -249,8 +249,7 @@ class _GEODE_EXPORT ExpiryTaskManager : public ACE_Task_Base {
                           bool cancelExistingTask = false) {
     LOGFINER(
         "ExpiryTaskManager: expTime %s, interval %s, cancelExistingTask %d",
-        to_string(expTime).c_str(),
-        to_string(interval).c_str(),
+        to_string(expTime).c_str(), to_string(interval).c_str(),
         cancelExistingTask);
     if (cancelExistingTask) {
       m_reactor->cancel_timer(handler, 1);
diff --git a/cppcache/src/FunctionServiceImpl.hpp b/cppcache/src/FunctionServiceImpl.hpp
index a12ca55..916d69d 100644
--- a/cppcache/src/FunctionServiceImpl.hpp
+++ b/cppcache/src/FunctionServiceImpl.hpp
@@ -36,7 +36,7 @@ namespace client {
  * @see Execution
  */
 
-class _GEODE_EXPORT FunctionServiceImpl : public FunctionService {
+class APACHE_GEODE_EXPORT FunctionServiceImpl : public FunctionService {
  public:
   /**
    * This function is used in multiuser mode to execute function on server.
diff --git a/cppcache/src/IntQueue.hpp b/cppcache/src/IntQueue.hpp
index 64f41ab..58ffe88 100644
--- a/cppcache/src/IntQueue.hpp
+++ b/cppcache/src/IntQueue.hpp
@@ -33,7 +33,7 @@ namespace client {
 
 template <class T>
 
-class _GEODE_EXPORT IntQueue {
+class APACHE_GEODE_EXPORT IntQueue {
  public:
   IntQueue() : m_cond(m_mutex) {}
 
diff --git a/cppcache/src/InterestResultPolicy.hpp b/cppcache/src/InterestResultPolicy.hpp
index cf86fe8..4bd16d5 100644
--- a/cppcache/src/InterestResultPolicy.hpp
+++ b/cppcache/src/InterestResultPolicy.hpp
@@ -32,7 +32,7 @@ namespace client {
  * @class InterestResultPolicy InterestResultPolicy.hpp
  * Policy class for interest result.
  */
-class _GEODE_EXPORT InterestResultPolicy {
+class APACHE_GEODE_EXPORT InterestResultPolicy {
   // public static methods
  public:
   static char nextOrdinal;
diff --git a/cppcache/src/InternalCacheTransactionManager2PC.hpp b/cppcache/src/InternalCacheTransactionManager2PC.hpp
index 7f5dc5c..c88c258 100644
--- a/cppcache/src/InternalCacheTransactionManager2PC.hpp
+++ b/cppcache/src/InternalCacheTransactionManager2PC.hpp
@@ -48,7 +48,7 @@ namespace client {
  * @since 8.3
  *
  */
-class _GEODE_EXPORT InternalCacheTransactionManager2PC
+class APACHE_GEODE_EXPORT InternalCacheTransactionManager2PC
     : public virtual CacheTransactionManager {
  public:
   /**
diff --git a/cppcache/src/LRUAction.hpp b/cppcache/src/LRUAction.hpp
index a4a75eb..5410416 100644
--- a/cppcache/src/LRUAction.hpp
+++ b/cppcache/src/LRUAction.hpp
@@ -36,7 +36,7 @@ namespace client {
  * @brief abstract behavior for different eviction actions.
  */
 class LRUEntriesMap;
-class _GEODE_EXPORT LRUAction {
+class APACHE_GEODE_EXPORT LRUAction {
  protected:
   bool m_invalidates;
   bool m_destroys;
@@ -94,7 +94,7 @@ class _GEODE_EXPORT LRUAction {
 /**
  * @brief LRUAction for destroy (distributed)
  */
-class _GEODE_EXPORT LRUDestroyAction : public virtual LRUAction {
+class APACHE_GEODE_EXPORT LRUDestroyAction : public virtual LRUAction {
  private:
   RegionInternal* m_regionPtr;
   // UNUSED LRUEntriesMap* m_entriesMapPtr;
@@ -133,7 +133,7 @@ class _GEODE_EXPORT LRUDestroyAction : public virtual LRUAction {
 /**
  * @brief LRUAction for invalidate.
  */
-class _GEODE_EXPORT LRULocalInvalidateAction : public virtual LRUAction {
+class APACHE_GEODE_EXPORT LRULocalInvalidateAction : public virtual LRUAction {
  private:
   RegionInternal* m_regionPtr;
   // UNUSED LRUEntriesMap* m_entriesMapPtr;
@@ -158,7 +158,7 @@ class _GEODE_EXPORT LRULocalInvalidateAction : public virtual LRUAction {
 /**
  * @brief LRUAction for invalidate.
  */
-class _GEODE_EXPORT LRUOverFlowToDiskAction : public virtual LRUAction {
+class APACHE_GEODE_EXPORT LRUOverFlowToDiskAction : public virtual LRUAction {
  private:
   RegionInternal* m_regionPtr;
   LRUEntriesMap* m_entriesMapPtr;
diff --git a/cppcache/src/LRUEntriesMap.cpp b/cppcache/src/LRUEntriesMap.cpp
index 84b7740..a40bb90 100644
--- a/cppcache/src/LRUEntriesMap.cpp
+++ b/cppcache/src/LRUEntriesMap.cpp
@@ -29,7 +29,7 @@ namespace client {
 /**
  * @brief LRUAction for testing map outside of a region....
  */
-class _GEODE_EXPORT TestMapAction : public virtual LRUAction {
+class APACHE_GEODE_EXPORT TestMapAction : public virtual LRUAction {
  private:
   EntriesMap* m_eMap;
 
diff --git a/cppcache/src/LRUEntriesMap.hpp b/cppcache/src/LRUEntriesMap.hpp
index 165f917..1c83fc7 100644
--- a/cppcache/src/LRUEntriesMap.hpp
+++ b/cppcache/src/LRUEntriesMap.hpp
@@ -57,7 +57,7 @@ class EvictionController;
  * its constructor and destructor but has no user-written assignment operator.
  * Fix : Make the class Non Assinable
  */
-class _GEODE_EXPORT LRUEntriesMap : public ConcurrentEntriesMap,
+class APACHE_GEODE_EXPORT LRUEntriesMap : public ConcurrentEntriesMap,
                                     private NonCopyable,
                                     private NonAssignable {
  protected:
diff --git a/cppcache/src/LRUExpMapEntry.hpp b/cppcache/src/LRUExpMapEntry.hpp
index 42cf7b7..2ff8710 100644
--- a/cppcache/src/LRUExpMapEntry.hpp
+++ b/cppcache/src/LRUExpMapEntry.hpp
@@ -31,7 +31,7 @@ namespace client {
 /**
  * @brief Hold region mapped entry value and lru information.
  */
-class _GEODE_EXPORT LRUExpMapEntry : public MapEntryImpl,
+class APACHE_GEODE_EXPORT LRUExpMapEntry : public MapEntryImpl,
                                      public LRUEntryProperties,
                                      public ExpEntryProperties {
  public:
@@ -63,7 +63,7 @@ class _GEODE_EXPORT LRUExpMapEntry : public MapEntryImpl,
   LRUExpMapEntry& operator=(const LRUExpMapEntry&);
 };
 
-class _GEODE_EXPORT VersionedLRUExpMapEntry : public LRUExpMapEntry,
+class APACHE_GEODE_EXPORT VersionedLRUExpMapEntry : public LRUExpMapEntry,
                                               public VersionStamp {
  public:
   virtual ~VersionedLRUExpMapEntry() {}
@@ -83,7 +83,7 @@ class _GEODE_EXPORT VersionedLRUExpMapEntry : public LRUExpMapEntry,
   VersionedLRUExpMapEntry& operator=(const VersionedLRUExpMapEntry&);
 };
 
-class _GEODE_EXPORT LRUExpEntryFactory : public EntryFactory {
+class APACHE_GEODE_EXPORT LRUExpEntryFactory : public EntryFactory {
  public:
   using EntryFactory::EntryFactory;
 
diff --git a/cppcache/src/LRUList.hpp b/cppcache/src/LRUList.hpp
index 28f0e75..e09f2da 100644
--- a/cppcache/src/LRUList.hpp
+++ b/cppcache/src/LRUList.hpp
@@ -39,7 +39,7 @@ namespace client {
 /**
  * @brief This class encapsulates LRU specific properties for a LRUList node.
  */
-class _GEODE_EXPORT LRUEntryProperties {
+class APACHE_GEODE_EXPORT LRUEntryProperties {
  public:
   inline LRUEntryProperties() : m_bits(0), m_persistenceInfo(nullptr) {}
 
diff --git a/cppcache/src/LRULocalDestroyAction.hpp b/cppcache/src/LRULocalDestroyAction.hpp
index 0bb7189..7ef2631 100644
--- a/cppcache/src/LRULocalDestroyAction.hpp
+++ b/cppcache/src/LRULocalDestroyAction.hpp
@@ -33,7 +33,7 @@ namespace client {
 /**
  * @brief LRUAction for localDestroy.
  */
-class _GEODE_EXPORT LRULocalDestroyAction : public virtual LRUAction {
+class APACHE_GEODE_EXPORT LRULocalDestroyAction : public virtual LRUAction {
  private:
   RegionInternal* m_regionPtr;
   LRUEntriesMap* m_entriesMapPtr;
diff --git a/cppcache/src/LRUMapEntry.hpp b/cppcache/src/LRUMapEntry.hpp
index 55dae4c..38d9f86 100644
--- a/cppcache/src/LRUMapEntry.hpp
+++ b/cppcache/src/LRUMapEntry.hpp
@@ -59,7 +59,7 @@ namespace client {
  *
  *
  */
-class _GEODE_EXPORT LRUMapEntry : public MapEntryImpl,
+class APACHE_GEODE_EXPORT LRUMapEntry : public MapEntryImpl,
                                   public LRUEntryProperties {
  public:
   virtual ~LRUMapEntry() {}
@@ -87,7 +87,7 @@ class _GEODE_EXPORT LRUMapEntry : public MapEntryImpl,
   LRUMapEntry& operator=(const LRUMapEntry&);
 };
 
-class _GEODE_EXPORT VersionedLRUMapEntry : public LRUMapEntry,
+class APACHE_GEODE_EXPORT VersionedLRUMapEntry : public LRUMapEntry,
                                            public VersionStamp {
  public:
   virtual ~VersionedLRUMapEntry() {}
@@ -105,7 +105,7 @@ class _GEODE_EXPORT VersionedLRUMapEntry : public LRUMapEntry,
   VersionedLRUMapEntry& operator=(const VersionedLRUMapEntry&);
 };
 
-class _GEODE_EXPORT LRUEntryFactory : public EntryFactory {
+class APACHE_GEODE_EXPORT LRUEntryFactory : public EntryFactory {
  public:
   using EntryFactory::EntryFactory;
 
diff --git a/cppcache/src/LocalRegion.hpp b/cppcache/src/LocalRegion.hpp
index 372a10d..64dd215 100644
--- a/cppcache/src/LocalRegion.hpp
+++ b/cppcache/src/LocalRegion.hpp
@@ -120,7 +120,7 @@ typedef std::unordered_map<std::shared_ptr<CacheableKey>,
  * starting with the root's subregions.
  */
 
-class _GEODE_EXPORT LocalRegion : public RegionInternal {
+class APACHE_GEODE_EXPORT LocalRegion : public RegionInternal {
   /**
    * @brief Public Methods for Region
    */
diff --git a/cppcache/src/MapEntry.hpp b/cppcache/src/MapEntry.hpp
index 080b314..8c79806 100644
--- a/cppcache/src/MapEntry.hpp
+++ b/cppcache/src/MapEntry.hpp
@@ -38,17 +38,17 @@
 namespace apache {
 namespace geode {
 namespace client {
-class _GEODE_EXPORT MapEntry;
-class _GEODE_EXPORT MapEntryImpl;
+class APACHE_GEODE_EXPORT MapEntry;
+class APACHE_GEODE_EXPORT MapEntryImpl;
 
-class _GEODE_EXPORT LRUEntryProperties;
+class APACHE_GEODE_EXPORT LRUEntryProperties;
 class CacheImpl;
 
 /**
  * @brief This class encapsulates expiration specific properties for
  *   a MapEntry.
  */
-class _GEODE_EXPORT ExpEntryProperties {
+class APACHE_GEODE_EXPORT ExpEntryProperties {
  public:
   typedef std::chrono::system_clock::time_point time_point;
 
@@ -109,7 +109,7 @@ class _GEODE_EXPORT ExpEntryProperties {
 /**
  * @brief Interface class for region mapped entry value.
  */
-class _GEODE_EXPORT MapEntry {
+class APACHE_GEODE_EXPORT MapEntry {
  public:
   virtual ~MapEntry() {}
 
@@ -257,7 +257,7 @@ class MapEntryImpl : public MapEntry,
   MapEntryImpl& operator=(const MapEntryImpl&);
 };
 
-class _GEODE_EXPORT VersionedMapEntryImpl : public MapEntryImpl,
+class APACHE_GEODE_EXPORT VersionedMapEntryImpl : public MapEntryImpl,
                                             public VersionStamp {
  public:
   virtual ~VersionedMapEntryImpl() {}
@@ -276,7 +276,7 @@ class _GEODE_EXPORT VersionedMapEntryImpl : public MapEntryImpl,
   VersionedMapEntryImpl& operator=(const VersionedMapEntryImpl&);
 };
 
-class _GEODE_EXPORT EntryFactory {
+class APACHE_GEODE_EXPORT EntryFactory {
  public:
   EntryFactory(const bool concurrencyChecksEnabled)
       : m_concurrencyChecksEnabled(concurrencyChecksEnabled) {}
diff --git a/cppcache/src/MapSegment.hpp b/cppcache/src/MapSegment.hpp
index 61d8a07..6fcbdda 100644
--- a/cppcache/src/MapSegment.hpp
+++ b/cppcache/src/MapSegment.hpp
@@ -79,7 +79,7 @@ typedef ::ACE_Hash_Map_Manager_Ex<
     CacheableKeyHashMap;
 
 /** @brief type wrapper around the ACE map implementation. */
-class _GEODE_EXPORT MapSegment {
+class APACHE_GEODE_EXPORT MapSegment {
  private:
   // contain
   CacheableKeyHashMap* m_map;
diff --git a/cppcache/src/NoResult.hpp b/cppcache/src/NoResult.hpp
index aefa7ea..791f170 100644
--- a/cppcache/src/NoResult.hpp
+++ b/cppcache/src/NoResult.hpp
@@ -40,7 +40,7 @@ namespace client {
  *
  *
  */
-class _GEODE_EXPORT NoResult : public ResultCollector {
+class APACHE_GEODE_EXPORT NoResult : public ResultCollector {
  public:
   NoResult() = default;
   virtual ~NoResult() override = default;
diff --git a/cppcache/src/NonCopyable.hpp b/cppcache/src/NonCopyable.hpp
index 1bbd91f..dcf4e3d 100644
--- a/cppcache/src/NonCopyable.hpp
+++ b/cppcache/src/NonCopyable.hpp
@@ -23,7 +23,7 @@
 namespace apache {
 namespace geode {
 namespace client {
-class _GEODE_EXPORT NonCopyable {
+class APACHE_GEODE_EXPORT NonCopyable {
  protected:
   NonCopyable() {}
   ~NonCopyable() {}
@@ -31,7 +31,7 @@ class _GEODE_EXPORT NonCopyable {
  private:
   NonCopyable(const NonCopyable&);
 };
-class _GEODE_EXPORT NonAssignable {
+class APACHE_GEODE_EXPORT NonAssignable {
  protected:
   NonAssignable() {}
   ~NonAssignable() {}
diff --git a/cppcache/src/PdxFieldType.hpp b/cppcache/src/PdxFieldType.hpp
index a624ad7..b0fcaf0 100644
--- a/cppcache/src/PdxFieldType.hpp
+++ b/cppcache/src/PdxFieldType.hpp
@@ -33,7 +33,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT PdxFieldType : public Serializable {
+class APACHE_GEODE_EXPORT PdxFieldType : public Serializable {
  private:
   std::string m_fieldName;
   std::string m_className;
diff --git a/cppcache/src/PdxInstanceFactoryImpl.hpp b/cppcache/src/PdxInstanceFactoryImpl.hpp
index 96e225f..975bac6 100644
--- a/cppcache/src/PdxInstanceFactoryImpl.hpp
+++ b/cppcache/src/PdxInstanceFactoryImpl.hpp
@@ -46,7 +46,7 @@ typedef std::map<std::string, std::shared_ptr<Cacheable>> FieldVsValues;
  * multiple factories or use {@link PdxInstance#createWriter} to create
  * subsequent instances.
  */
-class _GEODE_EXPORT PdxInstanceFactoryImpl
+class APACHE_GEODE_EXPORT PdxInstanceFactoryImpl
     : public PdxInstanceFactory,
       public std::enable_shared_from_this<PdxInstanceFactoryImpl> {
  public:
diff --git a/cppcache/src/PdxInstanceImpl.hpp b/cppcache/src/PdxInstanceImpl.hpp
index b6689cf..c5ed046 100644
--- a/cppcache/src/PdxInstanceImpl.hpp
+++ b/cppcache/src/PdxInstanceImpl.hpp
@@ -38,7 +38,7 @@ namespace client {
 
 typedef std::map<std::string, std::shared_ptr<Cacheable>> FieldVsValues;
 
-class _GEODE_EXPORT PdxInstanceImpl : public WritablePdxInstance {
+class APACHE_GEODE_EXPORT PdxInstanceImpl : public WritablePdxInstance {
  public:
   ~PdxInstanceImpl() noexcept override;
 
diff --git a/cppcache/src/PdxTypeRegistry.hpp b/cppcache/src/PdxTypeRegistry.hpp
index e58d986..c3504b1 100644
--- a/cppcache/src/PdxTypeRegistry.hpp
+++ b/cppcache/src/PdxTypeRegistry.hpp
@@ -59,7 +59,7 @@ typedef std::unordered_map<std::shared_ptr<PdxSerializable>,
 typedef std::map<std::shared_ptr<PdxType>, int32_t, PdxTypeLessThan>
     PdxTypeToTypeIdMap;
 
-class _GEODE_EXPORT PdxTypeRegistry
+class APACHE_GEODE_EXPORT PdxTypeRegistry
     : public std::enable_shared_from_this<PdxTypeRegistry> {
  private:
   CacheImpl* cache;
diff --git a/cppcache/src/PoolXmlCreation.hpp b/cppcache/src/PoolXmlCreation.hpp
index cae970f..dc587f1 100644
--- a/cppcache/src/PoolXmlCreation.hpp
+++ b/cppcache/src/PoolXmlCreation.hpp
@@ -38,7 +38,7 @@ class Cache;
  *
  * @since 3.0
  */
-class _GEODE_EXPORT PoolXmlCreation {
+class APACHE_GEODE_EXPORT PoolXmlCreation {
  private:
   /** An <code>RegionAttributesFactory</code> for creating default
    * <code>PoolAttribute</code>s */
diff --git a/cppcache/src/PreservedDataExpiryHandler.hpp b/cppcache/src/PreservedDataExpiryHandler.hpp
index c6423b7..a084a91 100644
--- a/cppcache/src/PreservedDataExpiryHandler.hpp
+++ b/cppcache/src/PreservedDataExpiryHandler.hpp
@@ -48,7 +48,7 @@ namespace client {
  * when a preserved data expires.
  *
  */
-class _GEODE_EXPORT PreservedDataExpiryHandler : public ACE_Event_Handler {
+class APACHE_GEODE_EXPORT PreservedDataExpiryHandler : public ACE_Event_Handler {
  public:
   /**
    * Constructor
diff --git a/cppcache/src/ProxyRegion.hpp b/cppcache/src/ProxyRegion.hpp
index 64bbcfb..4780949 100644
--- a/cppcache/src/ProxyRegion.hpp
+++ b/cppcache/src/ProxyRegion.hpp
@@ -53,7 +53,7 @@ class FunctionService;
  * @class ProxyRegion ProxyRegion.hpp
  * This class wrapper around real region
  */
-class _GEODE_EXPORT ProxyRegion : public Region {
+class APACHE_GEODE_EXPORT ProxyRegion : public Region {
  public:
   virtual const std::string& getName() const override {
     return m_realRegion->getName();
diff --git a/cppcache/src/ProxyRemoteQueryService.hpp b/cppcache/src/ProxyRemoteQueryService.hpp
index 650d7f2..6d82dbd 100644
--- a/cppcache/src/ProxyRemoteQueryService.hpp
+++ b/cppcache/src/ProxyRemoteQueryService.hpp
@@ -36,7 +36,7 @@ namespace client {
 class CacheImpl;
 class ThinClientPoolDM;
 
-class _GEODE_EXPORT ProxyRemoteQueryService : public QueryService {
+class APACHE_GEODE_EXPORT ProxyRemoteQueryService : public QueryService {
  public:
   ProxyRemoteQueryService(AuthenticatedView* cptr);
   virtual ~ProxyRemoteQueryService() = default;
diff --git a/cppcache/src/PutAllPartialResultServerException.hpp b/cppcache/src/PutAllPartialResultServerException.hpp
index f629f23..3ea0c77 100644
--- a/cppcache/src/PutAllPartialResultServerException.hpp
+++ b/cppcache/src/PutAllPartialResultServerException.hpp
@@ -35,7 +35,7 @@ class PutAllPartialResultServerException;
  * @brief PutAllPartialResultServerException class is used to encapsulate
  *geode PutAllPartialResultServerException in case of PutAll execution.
  **/
-class _GEODE_EXPORT PutAllPartialResultServerException : public Serializable {
+class APACHE_GEODE_EXPORT PutAllPartialResultServerException : public Serializable {
   /**
    * @brief public methods
    */
diff --git a/cppcache/src/Queue.hpp b/cppcache/src/Queue.hpp
index 103ae33..f0adafb 100644
--- a/cppcache/src/Queue.hpp
+++ b/cppcache/src/Queue.hpp
@@ -31,7 +31,7 @@ namespace geode {
 namespace client {
 
 template <class T>
-class _GEODE_EXPORT Queue {
+class APACHE_GEODE_EXPORT Queue {
  public:
   /**
    * Constructor with parameter to specify whether the contained objects
diff --git a/cppcache/src/ReadWriteLock.hpp b/cppcache/src/ReadWriteLock.hpp
index 8c4b1a6..17d45f7 100644
--- a/cppcache/src/ReadWriteLock.hpp
+++ b/cppcache/src/ReadWriteLock.hpp
@@ -42,7 +42,7 @@ class TimedTryWriteGuard {
   Condition cond_;
 };
 
-class _GEODE_EXPORT ReadGuard {
+class APACHE_GEODE_EXPORT ReadGuard {
  public:
   ReadGuard(ACE_RW_Thread_Mutex& lock) : lock_(lock) { lock_.acquire_read(); }
 
diff --git a/cppcache/src/RegionConfig.hpp b/cppcache/src/RegionConfig.hpp
index 34cb9df..851fc47 100644
--- a/cppcache/src/RegionConfig.hpp
+++ b/cppcache/src/RegionConfig.hpp
@@ -39,7 +39,7 @@ namespace client {
 
 class RegionConfig;
 
-class _GEODE_EXPORT RegionConfig {
+class APACHE_GEODE_EXPORT RegionConfig {
  public:
   RegionConfig(const std::string& s, const std::string& c);
 
diff --git a/cppcache/src/RegionExpiryHandler.hpp b/cppcache/src/RegionExpiryHandler.hpp
index bd2a6c9..95dff85 100644
--- a/cppcache/src/RegionExpiryHandler.hpp
+++ b/cppcache/src/RegionExpiryHandler.hpp
@@ -44,7 +44,7 @@ namespace client {
  * manager when region is destroyed
  *
  */
-class _GEODE_EXPORT RegionExpiryHandler : public ACE_Event_Handler {
+class APACHE_GEODE_EXPORT RegionExpiryHandler : public ACE_Event_Handler {
  public:
   /**
    * Constructor
diff --git a/cppcache/src/RegionGlobalLocks.hpp b/cppcache/src/RegionGlobalLocks.hpp
index 16d1dd9..e065e2e 100644
--- a/cppcache/src/RegionGlobalLocks.hpp
+++ b/cppcache/src/RegionGlobalLocks.hpp
@@ -26,7 +26,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT RegionGlobalLocks {
+class APACHE_GEODE_EXPORT RegionGlobalLocks {
  public:
   RegionGlobalLocks(LocalRegion* region, bool isFailover = true)
       : m_region(region), m_isFailover(isFailover) {
diff --git a/cppcache/src/RegionStats.hpp b/cppcache/src/RegionStats.hpp
index 963e747..14353d9 100644
--- a/cppcache/src/RegionStats.hpp
+++ b/cppcache/src/RegionStats.hpp
@@ -35,7 +35,7 @@ using statistics::StatisticDescriptor;
 using statistics::StatisticsType;
 using statistics::Statistics;
 
-class _GEODE_EXPORT RegionStats {
+class APACHE_GEODE_EXPORT RegionStats {
  public:
   /** hold statistics for a region.. */
   RegionStats(statistics::StatisticsFactory* factory, const std::string& regionName);
diff --git a/cppcache/src/RegionXmlCreation.hpp b/cppcache/src/RegionXmlCreation.hpp
index fd6a68f..b4c6616 100644
--- a/cppcache/src/RegionXmlCreation.hpp
+++ b/cppcache/src/RegionXmlCreation.hpp
@@ -38,7 +38,7 @@ class Cache;
  *
  * @since 1.0
  */
-class _GEODE_EXPORT RegionXmlCreation {
+class APACHE_GEODE_EXPORT RegionXmlCreation {
  private:
   /** An <code>RegionAttributesFactory</code> for creating default
    * <code>RegionAttribute</code>s */
diff --git a/cppcache/src/RemoteQuery.hpp b/cppcache/src/RemoteQuery.hpp
index 8a950b0..32944d7 100644
--- a/cppcache/src/RemoteQuery.hpp
+++ b/cppcache/src/RemoteQuery.hpp
@@ -42,7 +42,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT RemoteQuery : public Query {
+class APACHE_GEODE_EXPORT RemoteQuery : public Query {
   std::string m_queryString;
   std::shared_ptr<RemoteQueryService> m_queryService;
   ThinClientBaseDM* m_tccdm;
diff --git a/cppcache/src/RemoteQueryService.hpp b/cppcache/src/RemoteQueryService.hpp
index 3ade30f..be54244 100644
--- a/cppcache/src/RemoteQueryService.hpp
+++ b/cppcache/src/RemoteQueryService.hpp
@@ -39,7 +39,7 @@ namespace client {
 class CacheImpl;
 class ThinClientPoolDM;
 typedef std::map<std::string, bool> CqPoolsConnected;
-class _GEODE_EXPORT RemoteQueryService
+class APACHE_GEODE_EXPORT RemoteQueryService
     : public QueryService,
       public std::enable_shared_from_this<RemoteQueryService> {
  public:
diff --git a/cppcache/src/ResultSetImpl.hpp b/cppcache/src/ResultSetImpl.hpp
index fc92a59..278b84e 100644
--- a/cppcache/src/ResultSetImpl.hpp
+++ b/cppcache/src/ResultSetImpl.hpp
@@ -35,7 +35,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT ResultSetImpl
+class APACHE_GEODE_EXPORT ResultSetImpl
     : public ResultSet,
       public std::enable_shared_from_this<ResultSetImpl> {
  public:
diff --git a/cppcache/src/SerializationRegistry.hpp b/cppcache/src/SerializationRegistry.hpp
index 4de126a..26789f5 100644
--- a/cppcache/src/SerializationRegistry.hpp
+++ b/cppcache/src/SerializationRegistry.hpp
@@ -134,7 +134,7 @@ class TheTypeMap : private NonCopyable {
 
 class Pool;
 
-class _GEODE_EXPORT SerializationRegistry {
+class APACHE_GEODE_EXPORT SerializationRegistry {
  public:
   SerializationRegistry() : theTypeMap() {}
 
diff --git a/cppcache/src/ServerLocation.hpp b/cppcache/src/ServerLocation.hpp
index 632e357..8112a1e 100644
--- a/cppcache/src/ServerLocation.hpp
+++ b/cppcache/src/ServerLocation.hpp
@@ -35,7 +35,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT ServerLocation : public Serializable {
+class APACHE_GEODE_EXPORT ServerLocation : public Serializable {
  public:
   ServerLocation(std::string serverName, int port)
       : Serializable(), m_serverName(std::move(serverName)), m_port(port) {
diff --git a/cppcache/src/Set.hpp b/cppcache/src/Set.hpp
index 4c9e8f7..62a9a0e 100644
--- a/cppcache/src/Set.hpp
+++ b/cppcache/src/Set.hpp
@@ -44,7 +44,7 @@ namespace client {
  * FIX : Make the class non copyable
  */
 template <typename T>
-class _GEODE_EXPORT Set : private NonAssignable {
+class APACHE_GEODE_EXPORT Set : private NonAssignable {
  public:
   // Iterator for a synchronized Set
   class Iterator {
diff --git a/cppcache/src/StructSetImpl.hpp b/cppcache/src/StructSetImpl.hpp
index b463e97..f78078b 100644
--- a/cppcache/src/StructSetImpl.hpp
+++ b/cppcache/src/StructSetImpl.hpp
@@ -39,7 +39,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT StructSetImpl
+class APACHE_GEODE_EXPORT StructSetImpl
     : public StructSet,
       public std::enable_shared_from_this<StructSetImpl> {
  public:
diff --git a/cppcache/src/SuspendedTxExpiryHandler.hpp b/cppcache/src/SuspendedTxExpiryHandler.hpp
index 5aeb36e..44a830f 100644
--- a/cppcache/src/SuspendedTxExpiryHandler.hpp
+++ b/cppcache/src/SuspendedTxExpiryHandler.hpp
@@ -42,7 +42,7 @@ class CacheTransactionManagerImpl;
  * when a suspended transaction expires.
  *
  */
-class _GEODE_EXPORT SuspendedTxExpiryHandler : public ACE_Event_Handler {
+class APACHE_GEODE_EXPORT SuspendedTxExpiryHandler : public ACE_Event_Handler {
  public:
   /**
    * Constructor
diff --git a/cppcache/src/TableOfPrimes.hpp b/cppcache/src/TableOfPrimes.hpp
index 098964b..6253baa 100644
--- a/cppcache/src/TableOfPrimes.hpp
+++ b/cppcache/src/TableOfPrimes.hpp
@@ -49,7 +49,7 @@ namespace client {
  *  A sampling of primes are used from 0 to 1 million. Not every prime is
  *  necessary, as the map scales, little steps are usually uninteresting.
  */
-class _GEODE_EXPORT TableOfPrimes {
+class APACHE_GEODE_EXPORT TableOfPrimes {
  public:
   inline static uint32_t getPrimeLength() { return g_primeLen; }
 
diff --git a/cppcache/src/Task.hpp b/cppcache/src/Task.hpp
index 7a4f6cb..e6e8d8d 100644
--- a/cppcache/src/Task.hpp
+++ b/cppcache/src/Task.hpp
@@ -33,7 +33,7 @@ namespace geode {
 namespace client {
 const char NC_thread[] = "NC thread";
 template <class T>
-class _GEODE_EXPORT Task : public ACE_Task_Base {
+class APACHE_GEODE_EXPORT Task : public ACE_Task_Base {
  public:
   /// Handle timeout events.
   typedef int (T::*OPERATION)(volatile bool& isRunning);
diff --git a/cppcache/src/TcpConn.hpp b/cppcache/src/TcpConn.hpp
index 0b01377..9b1347c 100644
--- a/cppcache/src/TcpConn.hpp
+++ b/cppcache/src/TcpConn.hpp
@@ -46,7 +46,7 @@ namespace client {
 
 #endif
 
-class _GEODE_EXPORT TcpConn : public Connector {
+class APACHE_GEODE_EXPORT TcpConn : public Connector {
  private:
   ACE_SOCK_Stream* m_io;
 
diff --git a/cppcache/src/TcrConnection.hpp b/cppcache/src/TcrConnection.hpp
index 645a0e9..f7a2d9b 100644
--- a/cppcache/src/TcrConnection.hpp
+++ b/cppcache/src/TcrConnection.hpp
@@ -84,7 +84,7 @@ class TcrEndpoint;
 class SystemProperties;
 class ThinClientPoolDM;
 class TcrConnectionManager;
-class _GEODE_EXPORT TcrConnection {
+class APACHE_GEODE_EXPORT TcrConnection {
  public:
   /** Create one connection, endpoint is in format of hostname:portno
    * It will do handshake with j-server. There're 2 types of handshakes:
diff --git a/cppcache/src/TcrConnectionManager.hpp b/cppcache/src/TcrConnectionManager.hpp
index e98bf5f..1ec7664 100644
--- a/cppcache/src/TcrConnectionManager.hpp
+++ b/cppcache/src/TcrConnectionManager.hpp
@@ -51,7 +51,7 @@ class ThinClientRegion;
 /**
  * @brief transport data between caches
  */
-class _GEODE_EXPORT TcrConnectionManager {
+class APACHE_GEODE_EXPORT TcrConnectionManager {
  public:
   TcrConnectionManager(CacheImpl* cache);
   ~TcrConnectionManager();
diff --git a/cppcache/src/TcrDistributionManager.hpp b/cppcache/src/TcrDistributionManager.hpp
index b39927f..826655c 100644
--- a/cppcache/src/TcrDistributionManager.hpp
+++ b/cppcache/src/TcrDistributionManager.hpp
@@ -31,7 +31,7 @@ class ThinClientRegion;
 /**
  * @brief Distribute data between caches
  */
-class _GEODE_EXPORT TcrDistributionManager
+class APACHE_GEODE_EXPORT TcrDistributionManager
     : public ThinClientDistributionManager {
  public:
   TcrDistributionManager(ThinClientRegion* region,
diff --git a/cppcache/src/TcrEndpoint.hpp b/cppcache/src/TcrEndpoint.hpp
index cf33cb1..f1beb3d 100644
--- a/cppcache/src/TcrEndpoint.hpp
+++ b/cppcache/src/TcrEndpoint.hpp
@@ -48,7 +48,7 @@ class ThinClientPoolHADM;
 class ThinClientPoolDM;
 class QueryService;
 
-class _GEODE_EXPORT TcrEndpoint {
+class APACHE_GEODE_EXPORT TcrEndpoint {
  public:
   TcrEndpoint(
       const std::string& name, CacheImpl* cacheImpl,
diff --git a/cppcache/src/TcrHADistributionManager.hpp b/cppcache/src/TcrHADistributionManager.hpp
index 725d5ef..cd4f607 100644
--- a/cppcache/src/TcrHADistributionManager.hpp
+++ b/cppcache/src/TcrHADistributionManager.hpp
@@ -34,7 +34,7 @@ class ThinClientHARegion;
 /**
  * @brief Distribute data between caches
  */
-class _GEODE_EXPORT TcrHADistributionManager
+class APACHE_GEODE_EXPORT TcrHADistributionManager
     : public ThinClientDistributionManager {
  public:
   TcrHADistributionManager(ThinClientRegion* theRegion,
diff --git a/cppcache/src/TcrMessage.hpp b/cppcache/src/TcrMessage.hpp
index 18d95cd..3b8b946 100644
--- a/cppcache/src/TcrMessage.hpp
+++ b/cppcache/src/TcrMessage.hpp
@@ -59,7 +59,7 @@ class TcrMessageHelper;
 class TcrConnection;
 class TcrMessagePing;
 
-class _GEODE_EXPORT TcrMessage {
+class APACHE_GEODE_EXPORT TcrMessage {
  private:
   inline static void writeInt(uint8_t* buffer, uint16_t value);
   inline static void writeInt(uint8_t* buffer, uint32_t value);
diff --git a/cppcache/src/ThinClientCacheDistributionManager.hpp b/cppcache/src/ThinClientCacheDistributionManager.hpp
index b57ae1c..4e67444 100644
--- a/cppcache/src/ThinClientCacheDistributionManager.hpp
+++ b/cppcache/src/ThinClientCacheDistributionManager.hpp
@@ -33,7 +33,7 @@ namespace client {
 class TcrMessage;
 class TcrConnection;
 
-class _GEODE_EXPORT ThinClientCacheDistributionManager
+class APACHE_GEODE_EXPORT ThinClientCacheDistributionManager
     : public ThinClientDistributionManager {
  public:
   ThinClientCacheDistributionManager(TcrConnectionManager& connManager);
diff --git a/cppcache/src/ThinClientHARegion.hpp b/cppcache/src/ThinClientHARegion.hpp
index 71f92fd..d67ffda 100644
--- a/cppcache/src/ThinClientHARegion.hpp
+++ b/cppcache/src/ThinClientHARegion.hpp
@@ -41,7 +41,7 @@ namespace client {
  * send and invalidate methods.
  *
  */
-class _GEODE_EXPORT ThinClientHARegion : public ThinClientRegion {
+class APACHE_GEODE_EXPORT ThinClientHARegion : public ThinClientRegion {
  public:
   /**
    * @brief constructor/destructor
diff --git a/cppcache/src/ThinClientRegion.hpp b/cppcache/src/ThinClientRegion.hpp
index edf0bed..55200d5 100644
--- a/cppcache/src/ThinClientRegion.hpp
+++ b/cppcache/src/ThinClientRegion.hpp
@@ -53,7 +53,7 @@ class ThinClientBaseDM;
  *
  */
 
-class _GEODE_EXPORT ThinClientRegion : public LocalRegion {
+class APACHE_GEODE_EXPORT ThinClientRegion : public LocalRegion {
  public:
   /**
    * @brief constructor/initializer/destructor
diff --git a/cppcache/src/TimeoutTimer.hpp b/cppcache/src/TimeoutTimer.hpp
index efa5884..9c26a39 100644
--- a/cppcache/src/TimeoutTimer.hpp
+++ b/cppcache/src/TimeoutTimer.hpp
@@ -32,7 +32,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-class _GEODE_EXPORT TimeoutTimer {
+class APACHE_GEODE_EXPORT TimeoutTimer {
  private:
   ACE_Recursive_Thread_Mutex m_mutex;
   ACE_Condition<ACE_Recursive_Thread_Mutex> m_cond;
diff --git a/cppcache/src/TombstoneExpiryHandler.hpp b/cppcache/src/TombstoneExpiryHandler.hpp
index d699b0d..0f9f30b 100644
--- a/cppcache/src/TombstoneExpiryHandler.hpp
+++ b/cppcache/src/TombstoneExpiryHandler.hpp
@@ -40,7 +40,7 @@ namespace client {
  * when a tombstone expires.
  *
  */
-class _GEODE_EXPORT TombstoneExpiryHandler : public ACE_Event_Handler {
+class APACHE_GEODE_EXPORT TombstoneExpiryHandler : public ACE_Event_Handler {
  public:
   /**
    * Constructor
diff --git a/cppcache/src/UserAttributes.hpp b/cppcache/src/UserAttributes.hpp
index 65ec95b..ff05b72 100644
--- a/cppcache/src/UserAttributes.hpp
+++ b/cppcache/src/UserAttributes.hpp
@@ -68,7 +68,7 @@ class UserConnectionAttributes {
   // UserConnectionAttributes & operator =(const UserConnectionAttributes &);
 };
 
-class _GEODE_EXPORT UserAttributes {
+class APACHE_GEODE_EXPORT UserAttributes {
   // TODO: need to add lock here so that user should not be authenticated at two
   // servers
  public:
diff --git a/cppcache/src/Utils.hpp b/cppcache/src/Utils.hpp
index 03d3cc8..270b3de 100644
--- a/cppcache/src/Utils.hpp
+++ b/cppcache/src/Utils.hpp
@@ -55,7 +55,7 @@ extern "C" {
 namespace apache {
 namespace geode {
 namespace client {
-class _GEODE_EXPORT Utils {
+class APACHE_GEODE_EXPORT Utils {
   /**
    * utilities
    *
diff --git a/cppcache/src/VersionStamp.hpp b/cppcache/src/VersionStamp.hpp
index 91b8e6d..36ea636 100644
--- a/cppcache/src/VersionStamp.hpp
+++ b/cppcache/src/VersionStamp.hpp
@@ -34,7 +34,7 @@ namespace client {
 /**
  * @brief This class encapsulates Version Stamp for map entries.
  */
-class _GEODE_EXPORT VersionStamp {
+class APACHE_GEODE_EXPORT VersionStamp {
  public:
   VersionStamp()
       : m_memberID(0),
diff --git a/cppcache/src/dllmain.cpp b/cppcache/src/dllmain.cpp
index 16d40a6..5cd92d7 100644
--- a/cppcache/src/dllmain.cpp
+++ b/cppcache/src/dllmain.cpp
@@ -62,7 +62,7 @@ BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call,
   return TRUE;
 }
 
-_GEODE_LIBEXP void DllMainGetPath(char *result, int maxLen) {
+APACHE_GEODE_EXPORT void DllMainGetPath(char *result, int maxLen) {
   if (!initgflibDone) {
     result[0] = '\0';
     return;
diff --git a/cppcache/src/statistics/HostStatSampler.hpp b/cppcache/src/statistics/HostStatSampler.hpp
index eef4758..afdca6b 100644
--- a/cppcache/src/statistics/HostStatSampler.hpp
+++ b/cppcache/src/statistics/HostStatSampler.hpp
@@ -63,7 +63,7 @@ class StatisticsManager;
  * HostStatSampler implements a thread which will monitor, sample and archive
  * statistics. It only has the common functionalities which any sampler needs.
  */
-class _GEODE_EXPORT HostStatSampler : public ACE_Task_Base,
+class APACHE_GEODE_EXPORT HostStatSampler : public ACE_Task_Base,
                                       private NonCopyable,
                                       private NonAssignable {
  public:
diff --git a/cppcache/src/statistics/PoolStatsSampler.hpp b/cppcache/src/statistics/PoolStatsSampler.hpp
index 8ce50ed..bc416d2 100644
--- a/cppcache/src/statistics/PoolStatsSampler.hpp
+++ b/cppcache/src/statistics/PoolStatsSampler.hpp
@@ -43,7 +43,7 @@ using client::ThinClientPoolDM;
 using client::AdminRegion;
 
 class StatisticsManager;
-class _GEODE_EXPORT PoolStatsSampler : public ACE_Task_Base {
+class APACHE_GEODE_EXPORT PoolStatsSampler : public ACE_Task_Base {
  public:
   PoolStatsSampler(std::chrono::milliseconds sampleRate, CacheImpl* cache,
                    ThinClientPoolDM* distMan);
diff --git a/cppcache/src/statistics/ProcessStats.hpp b/cppcache/src/statistics/ProcessStats.hpp
index 6fc5c06..bb5e3b4 100644
--- a/cppcache/src/statistics/ProcessStats.hpp
+++ b/cppcache/src/statistics/ProcessStats.hpp
@@ -38,7 +38,7 @@ namespace statistics {
  * This is necessary for monitoring the health of Geode components.
  *
  */
-class _GEODE_EXPORT ProcessStats {
+class APACHE_GEODE_EXPORT ProcessStats {
  public:
   /**
    * Creates a new <code>ProcessStats</code> that wraps the given
diff --git a/cppcache/src/statistics/StatArchiveWriter.hpp b/cppcache/src/statistics/StatArchiveWriter.hpp
index d0082f2..e061aea 100644
--- a/cppcache/src/statistics/StatArchiveWriter.hpp
+++ b/cppcache/src/statistics/StatArchiveWriter.hpp
@@ -79,7 +79,7 @@ using std::chrono::steady_clock;
  *                 // descriptors in the previous sample run.
  */
 
-class _GEODE_EXPORT StatDataOutput {
+class APACHE_GEODE_EXPORT StatDataOutput {
  public:
   StatDataOutput(CacheImpl* cache);
   StatDataOutput(std::string, CacheImpl* cache);
@@ -139,7 +139,7 @@ class _GEODE_EXPORT StatDataOutput {
   friend class StatArchiveWriter;
 };
 
-class _GEODE_EXPORT ResourceType : private NonCopyable, private NonAssignable {
+class APACHE_GEODE_EXPORT ResourceType : private NonCopyable, private NonAssignable {
  public:
   ResourceType(int32_t id, const StatisticsType *type);
   int32_t getId() const;
@@ -166,7 +166,7 @@ class _GEODE_EXPORT ResourceType : private NonCopyable, private NonAssignable {
  * FIX : Make the class NonCopyable
  */
 
-class _GEODE_EXPORT ResourceInst : private NonCopyable, private NonAssignable {
+class APACHE_GEODE_EXPORT ResourceInst : private NonCopyable, private NonAssignable {
  public:
   ResourceInst(int32_t id, Statistics *, const ResourceType *,
                StatDataOutput *);
@@ -198,7 +198,7 @@ class HostStatSampler;
  * @class StatArchiveWriter
  */
 
-class _GEODE_EXPORT StatArchiveWriter {
+class APACHE_GEODE_EXPORT StatArchiveWriter {
  private:
   HostStatSampler *sampler;
   StatDataOutput *dataBuffer;
diff --git a/cppcache/src/statistics/StatSamplerStats.hpp b/cppcache/src/statistics/StatSamplerStats.hpp
index d9dcc18..b0bac7c 100644
--- a/cppcache/src/statistics/StatSamplerStats.hpp
+++ b/cppcache/src/statistics/StatSamplerStats.hpp
@@ -40,7 +40,7 @@ class StatisticsFactory;
 /**
  * Statistics related to the statistic sampler.
  */
-class _GEODE_EXPORT StatSamplerStats {
+class APACHE_GEODE_EXPORT StatSamplerStats {
  private:
   StatisticsType* samplerType;
   Statistics* samplerStats;
diff --git a/cppcache/src/statistics/StatisticDescriptor.hpp b/cppcache/src/statistics/StatisticDescriptor.hpp
index 5bbfe10..8d52716 100644
--- a/cppcache/src/statistics/StatisticDescriptor.hpp
+++ b/cppcache/src/statistics/StatisticDescriptor.hpp
@@ -46,7 +46,7 @@ using namespace apache::geode::client;
  *
  */
 
-class _GEODE_EXPORT StatisticDescriptor {
+class APACHE_GEODE_EXPORT StatisticDescriptor {
  public:
   /**
     * Returns the id of this statistic in a {@link StatisticsType
diff --git a/cppcache/src/statistics/Statistics.hpp b/cppcache/src/statistics/Statistics.hpp
index af6d618..65825d7 100644
--- a/cppcache/src/statistics/Statistics.hpp
+++ b/cppcache/src/statistics/Statistics.hpp
@@ -40,7 +40,7 @@ namespace statistics {
  * setting, incrementing and getting individual <code>StatisticDescriptor</code>
  * values.
  */
-class _GEODE_EXPORT Statistics {
+class APACHE_GEODE_EXPORT Statistics {
  public:
   /**
    * Closes these statistics.  After statistics have been closed, they
diff --git a/cppcache/src/statistics/StatisticsFactory.hpp b/cppcache/src/statistics/StatisticsFactory.hpp
index f45d831..ab33928 100644
--- a/cppcache/src/statistics/StatisticsFactory.hpp
+++ b/cppcache/src/statistics/StatisticsFactory.hpp
@@ -53,7 +53,7 @@ namespace statistics {
  *
  */
 
-class _GEODE_EXPORT StatisticsFactory {
+class APACHE_GEODE_EXPORT StatisticsFactory {
  protected:
   StatisticsFactory() {}
   StatisticsFactory(const StatisticsFactory&) = delete;
diff --git a/cppcache/src/statistics/StatisticsType.hpp b/cppcache/src/statistics/StatisticsType.hpp
index 1c3daee..44b6339 100644
--- a/cppcache/src/statistics/StatisticsType.hpp
+++ b/cppcache/src/statistics/StatisticsType.hpp
@@ -44,7 +44,7 @@ using namespace apache::geode::client;
  *
  */
 
-class _GEODE_EXPORT StatisticsType {
+class APACHE_GEODE_EXPORT StatisticsType {
  public:
   /**
    * Returns the name of this statistics type.
diff --git a/cppcache/src/util/Log.hpp b/cppcache/src/util/Log.hpp
index b99ae9f..8d7b664 100644
--- a/cppcache/src/util/Log.hpp
+++ b/cppcache/src/util/Log.hpp
@@ -140,7 +140,7 @@ class Exception;
   *
   */
 
-class _GEODE_EXPORT Log {
+class APACHE_GEODE_EXPORT Log {
  public:
   /******/
 
@@ -577,7 +577,7 @@ class LogFn {
  * These functions are added to facilitate logging in printf format.
  */
 
-class _GEODE_EXPORT LogVarargs {
+class APACHE_GEODE_EXPORT LogVarargs {
  public:
   static void debug(const char* fmt, ...);
   static void error(const char* fmt, ...);
diff --git a/cppcache/src/util/exception.hpp b/cppcache/src/util/exception.hpp
index 4bafcb1..e697789 100644
--- a/cppcache/src/util/exception.hpp
+++ b/cppcache/src/util/exception.hpp
@@ -29,7 +29,7 @@ namespace apache {
 namespace geode {
 namespace client {
 
-extern void _GEODE_EXPORT GfErrTypeThrowException(const char* str,
+extern void APACHE_GEODE_EXPORT GfErrTypeThrowException(const char* str,
                                                   GfErrType err);
 
 #define GfErrTypeToException(str, err)   \
diff --git a/cppcache/static/CMakeLists.txt b/cppcache/static/CMakeLists.txt
index 5ea3ba6..4e93e4f 100644
--- a/cppcache/static/CMakeLists.txt
+++ b/cppcache/static/CMakeLists.txt
@@ -16,17 +16,21 @@
 cmake_minimum_required(VERSION 3.4)
 project(apache-geode-static LANGUAGES CXX)
 
-add_library(${PROJECT_NAME} STATIC ${SOURCES_ALL})
+add_library(apache-geode-static STATIC ${SOURCES_ALL})
 
 set_source_files_properties(${CONFIGURE_OUT_FILES} PROPERTIES GENERATED TRUE)
 
-target_link_libraries(${PROJECT_NAME}
+target_compile_definitions(apache-geode-static PUBLIC
+  APACHE_GEODE_STATIC_DEFINE
+)
+
+target_link_libraries(apache-geode-static
   PUBLIC
     _apache-geode
   PRIVATE
     _WarningsAsError)
 
-add_dependencies(client-libraries ${PROJECT_NAME})
+add_dependencies(client-libraries apache-geode-static)
 
 
 # BEGIN Visual Studio organization
@@ -45,7 +49,7 @@ if (USE_PCH)
       ${CMAKE_BINARY_DIR}/dependencies/boost/include/boost/stacktrace.hpp)
   endif()
 
-  set_target_properties(${PROJECT_NAME} PROPERTIES
+  set_target_properties(apache-geode-static PROPERTIES
     COTIRE_ENABLE_PRECOMPILED_HEADER TRUE
     COTIRE_ADD_UNITY_BUILD TRUE
     COTIRE_PREFIX_HEADER_IGNORE_PATH "${_COTIRE_PREFIX_HEADER_IGNORE_PATH}"
@@ -53,5 +57,5 @@ if (USE_PCH)
 
   set_source_files_properties(cppcache/version.h PROPERTIES GENERATED TRUE)
 
-  cotire(${PROJECT_NAME})
+  cotire(apache-geode-static)
 endif()
diff --git a/cryptoimpl/CMakeLists.txt b/cryptoimpl/CMakeLists.txt
index cf2339a..d213ee7 100644
--- a/cryptoimpl/CMakeLists.txt
+++ b/cryptoimpl/CMakeLists.txt
@@ -12,16 +12,28 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+
 cmake_minimum_required(VERSION 3.4)
 project(cryptoImpl LANGUAGES CXX)
 
-file(GLOB_RECURSE SOURCES "*.cpp")
+add_library(cryptoImpl SHARED
+  ${CMAKE_CURRENT_BINARY_DIR}/cryptoimpl_export.h
+  DHImpl.hpp
+  DHImpl.cpp
+  Ssl.hpp
+  SSLImpl.hpp
+  SSLImpl.cpp)
 
-add_library(cryptoImpl SHARED ${SOURCES})
+include(GenerateExportHeader)
+generate_export_header(cryptoImpl)
 
-target_compile_definitions(cryptoImpl
-  PRIVATE
-    BUILD_CPPCACHE)
+target_include_directories(cryptoImpl
+  PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
+
+set_target_properties(cryptoImpl PROPERTIES
+  CXX_VISIBILITY_PRESET hidden
+  VISIBILITY_INLINES_HIDDEN ON)
 
 target_link_libraries(cryptoImpl
   PRIVATE
diff --git a/cryptoimpl/DHImpl.hpp b/cryptoimpl/DHImpl.hpp
index f54b4da..7259448 100644
--- a/cryptoimpl/DHImpl.hpp
+++ b/cryptoimpl/DHImpl.hpp
@@ -28,7 +28,7 @@
 #include <cstring>
 #include <string>
 
-#include <geode/internal/geode_base.hpp>
+#include "cryptoimpl_export.h"
 
 #define DH_ERR_NO_ERROR 0
 #define DH_ERR_UNSUPPORTED_ALGO 1
@@ -53,24 +53,25 @@ typedef struct DH_pubkey_st {
 } DH_PUBKEY;
 
 extern "C" {
-_GEODE_EXPORT int gf_initDhKeys(void** dhCtx, const char* dhAlgo,
-                                const char* ksPath);
-_GEODE_EXPORT void gf_clearDhKeys(void* dhCtx);
-_GEODE_EXPORT unsigned char* gf_getPublicKey(void* dhCtx, int* len);
-_GEODE_EXPORT void gf_setPublicKeyOther(void* dhCtx,
-                                        const unsigned char* pubkey,
-                                        int length);
-_GEODE_EXPORT void gf_computeSharedSecret(void* dhCtx);
-_GEODE_EXPORT unsigned char* gf_encryptDH(void* dhCtx,
-                                          const unsigned char* cleartext,
-                                          int len, int* retLen);
-_GEODE_EXPORT unsigned char* gf_decryptDH(void* dhCtx,
-                                          const unsigned char* cleartext,
-                                          int len, int* retLen);
-_GEODE_EXPORT bool gf_verifyDH(void* dhCtx, const char* subject,
-                               const unsigned char* challenge, int challengeLen,
-                               const unsigned char* response, int responseLen,
-                               int* reason);
+CRYPTOIMPL_EXPORT int gf_initDhKeys(void** dhCtx, const char* dhAlgo,
+                                    const char* ksPath);
+CRYPTOIMPL_EXPORT void gf_clearDhKeys(void* dhCtx);
+CRYPTOIMPL_EXPORT unsigned char* gf_getPublicKey(void* dhCtx, int* len);
+CRYPTOIMPL_EXPORT void gf_setPublicKeyOther(void* dhCtx,
+                                            const unsigned char* pubkey,
+                                            int length);
+CRYPTOIMPL_EXPORT void gf_computeSharedSecret(void* dhCtx);
+CRYPTOIMPL_EXPORT unsigned char* gf_encryptDH(void* dhCtx,
+                                              const unsigned char* cleartext,
+                                              int len, int* retLen);
+CRYPTOIMPL_EXPORT unsigned char* gf_decryptDH(void* dhCtx,
+                                              const unsigned char* cleartext,
+                                              int len, int* retLen);
+CRYPTOIMPL_EXPORT bool gf_verifyDH(void* dhCtx, const char* subject,
+                                   const unsigned char* challenge,
+                                   int challengeLen,
+                                   const unsigned char* response,
+                                   int responseLen, int* reason);
 }
 
 class DHImpl {
diff --git a/cryptoimpl/SSLImpl.hpp b/cryptoimpl/SSLImpl.hpp
index 57aeee3..b4180f6 100644
--- a/cryptoimpl/SSLImpl.hpp
+++ b/cryptoimpl/SSLImpl.hpp
@@ -34,7 +34,7 @@
 #include <ace/Time_Value.h>
 #pragma pack(pop)
 
-#include <geode/internal/geode_base.hpp>
+#include "cryptoimpl_export.h"
 
 #include "Ssl.hpp"
 
@@ -63,10 +63,11 @@ class SSLImpl : public apache::geode::client::Ssl {
 };
 
 extern "C" {
-_GEODE_EXPORT void* gf_create_SslImpl(ACE_HANDLE sock, const char* pubkeyfile,
-                                      const char* privkeyfile,
-                                      const char* pemPassword);
-_GEODE_EXPORT void gf_destroy_SslImpl(void* impl);
+CRYPTOIMPL_EXPORT void* gf_create_SslImpl(ACE_HANDLE sock,
+                                          const char* pubkeyfile,
+                                          const char* privkeyfile,
+                                          const char* pemPassword);
+CRYPTOIMPL_EXPORT void gf_destroy_SslImpl(void* impl);
 }
 
 }  // namespace client
diff --git a/dhimpl/CMakeLists.txt b/dhimpl/CMakeLists.txt
index 5d459de..cf0ca70 100644
--- a/dhimpl/CMakeLists.txt
+++ b/dhimpl/CMakeLists.txt
@@ -14,15 +14,18 @@
 # limitations under the License.
 
 cmake_minimum_required(VERSION 3.10)
-project(dhimpl LANGUAGES CXX)
+project(DHImpl LANGUAGES CXX)
 
 file(GLOB_RECURSE SOURCES "*.cpp")
 
 add_library(DHImpl SHARED ${SOURCES})
 
-target_compile_definitions(DHImpl
-  PRIVATE
-    BUILD_CPPCACHE)
+include(GenerateExportHeader)
+generate_export_header(DHImpl)
+
+target_include_directories(DHImpl
+  PUBLIC
+	$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
 
 target_link_libraries(DHImpl
   PUBLIC 
diff --git a/dhimpl/DHImpl.hpp b/dhimpl/DHImpl.hpp
index 3eb3860..8270282 100644
--- a/dhimpl/DHImpl.hpp
+++ b/dhimpl/DHImpl.hpp
@@ -26,7 +26,7 @@
 #include <string>
 #include <vector>
 
-#include <geode/internal/geode_base.hpp>
+#include "dhimpl_export.h"
 
 #define DH_ERR_NO_ERROR 0
 #define DH_ERR_UNSUPPORTED_ALGO 1
@@ -51,15 +51,15 @@ typedef struct DH_pubkey_st {
 } DH_PUBKEY;
 
 extern "C" {
-_GEODE_EXPORT int gf_initDhKeys(const char* dhAlgo, const char* ksPath);
-_GEODE_EXPORT void gf_clearDhKeys(void);
-_GEODE_EXPORT unsigned char* gf_getPublicKey(int* len);
-_GEODE_EXPORT void gf_setPublicKeyOther(const unsigned char* pubkey,
+DHIMPL_EXPORT int gf_initDhKeys(const char* dhAlgo, const char* ksPath);
+DHIMPL_EXPORT void gf_clearDhKeys(void);
+DHIMPL_EXPORT unsigned char* gf_getPublicKey(int* len);
+DHIMPL_EXPORT void gf_setPublicKeyOther(const unsigned char* pubkey,
                                         int length);
-_GEODE_EXPORT void gf_computeSharedSecret(void);
-_GEODE_EXPORT unsigned char* gf_encryptDH(const unsigned char* cleartext,
+DHIMPL_EXPORT void gf_computeSharedSecret(void);
+DHIMPL_EXPORT unsigned char* gf_encryptDH(const unsigned char* cleartext,
                                           int len, int* retLen);
-_GEODE_EXPORT bool gf_verifyDH(const char* subject,
+DHIMPL_EXPORT bool gf_verifyDH(const char* subject,
                                const unsigned char* challenge, int challengeLen,
                                const unsigned char* response, int responseLen,
                                int* reason);
diff --git a/sqliteimpl/CMakeLists.txt b/sqliteimpl/CMakeLists.txt
index c8c8a72..4298e4b 100644
--- a/sqliteimpl/CMakeLists.txt
+++ b/sqliteimpl/CMakeLists.txt
@@ -23,6 +23,13 @@ add_library(SqLiteImpl SHARED
   SqLiteImpl.hpp
 )
 
+include(GenerateExportHeader)
+generate_export_header(SqLiteImpl)
+
+target_include_directories(SqLiteImpl
+  PUBLIC
+	$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
+
 target_link_libraries(SqLiteImpl
   PUBLIC
     apache-geode
diff --git a/sqliteimpl/SqLiteImpl.cpp b/sqliteimpl/SqLiteImpl.cpp
index e0c24a2..313d7d6 100644
--- a/sqliteimpl/SqLiteImpl.cpp
+++ b/sqliteimpl/SqLiteImpl.cpp
@@ -19,6 +19,7 @@
 #include <geode/Cache.hpp>
 
 #include "SqLiteImpl.hpp"
+#include "sqliteimpl_export.h"
 
 #ifdef _WIN32
 #include <Windows.h>
@@ -201,7 +202,7 @@ void SqLiteImpl::close() {
 
 extern "C" {
 
-_GEODE_LIBEXP PersistenceManager* createSqLiteInstance() {
+SQLITEIMPL_EXPORT PersistenceManager* createSqLiteInstance() {
   return new SqLiteImpl;
 }
 }
diff --git a/templates/security/CMakeLists.txt b/templates/security/CMakeLists.txt
index 9eefc92..8cf752c 100644
--- a/templates/security/CMakeLists.txt
+++ b/templates/security/CMakeLists.txt
@@ -24,6 +24,13 @@ add_library(securityImpl SHARED
   CMakeLists.txt.forInstall
 )
 
+include(GenerateExportHeader)
+generate_export_header(securityImpl)
+
+target_include_directories(securityImpl
+  PUBLIC
+	$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
+
 target_link_libraries(securityImpl
   PUBLIC
     apache-geode
diff --git a/templates/security/CMakeLists.txt.forInstall b/templates/security/CMakeLists.txt.forInstall
index 9db5af5..16181d3 100644
--- a/templates/security/CMakeLists.txt.forInstall
+++ b/templates/security/CMakeLists.txt.forInstall
@@ -17,12 +17,19 @@
 cmake_minimum_required(VERSION 3.4)
 project(templates.security)
 
-find_package(OpenSSL 1.0.1 REQUIRED)
+find_package(OpenSSL 1.0.2 REQUIRED)
 
 file(GLOB_RECURSE SOURCES "*.cpp")
 
 add_library(securityImpl SHARED ${SOURCES})
 
+include(GenerateExportHeader)
+generate_export_header(securityImpl)
+
+target_include_directories(securityImpl
+  PUBLIC
+	$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
+
 include_directories(${NATIVECLIENT_INCLUDE_DIR})
 
 if (${WIN32})
diff --git a/templates/security/PkcsAuthInit.cpp b/templates/security/PkcsAuthInit.cpp
index f7f5511..d21f628 100644
--- a/templates/security/PkcsAuthInit.cpp
+++ b/templates/security/PkcsAuthInit.cpp
@@ -16,18 +16,22 @@
  */
 
 #include "PkcsAuthInit.hpp"
+
+#include <cstdio>
+#include <string>
+
 #include "geode/Properties.hpp"
 #include "geode/CacheableBuiltins.hpp"
 #include "geode/ExceptionTypes.hpp"
-#include <cstdio>
-#include <string>
+
+#include "securityimpl_export.h"
 
 namespace apache {
 namespace geode {
 namespace client {
 
 extern "C" {
-_GEODE_LIBEXP AuthInitialize* createPKCSAuthInitInstance() {
+SECURITYIMPL_EXPORT AuthInitialize* createPKCSAuthInitInstance() {
   return new PKCSAuthInit();
 }
 
@@ -38,17 +42,16 @@ uint8_t* createSignature(EVP_PKEY* key, X509* cert,
     return NULL;
   }
 
-  const ASN1_OBJECT *macobj;
+  const ASN1_OBJECT* macobj;
   X509_ALGOR_get0(&macobj, NULL, NULL, NULL);
   const EVP_MD* signatureDigest = EVP_get_digestbyobj(macobj);
 
   EVP_MD_CTX* signatureCtx = EVP_MD_CTX_new();
   uint8_t* signatureData = new uint8_t[EVP_PKEY_size(key)];
 
-  bool result =
-      (EVP_SignInit_ex(signatureCtx, signatureDigest, NULL) &&
-       EVP_SignUpdate(signatureCtx, inputBuffer, inputBufferLen) &&
-       EVP_SignFinal(signatureCtx, signatureData, signatureLen, key));
+  bool result = (EVP_SignInit_ex(signatureCtx, signatureDigest, NULL) &&
+                 EVP_SignUpdate(signatureCtx, inputBuffer, inputBufferLen) &&
+                 EVP_SignFinal(signatureCtx, signatureData, signatureLen, key));
 
   EVP_MD_CTX_free(signatureCtx);
   if (result) {
@@ -106,34 +109,34 @@ std::shared_ptr<Properties> PKCSAuthInit::getCredentials(
         "No security-* properties are set.");
   }
 
- auto keyStoreptr = securityprops->find(KEYSTORE_FILE_PATH);
+  auto keyStoreptr = securityprops->find(KEYSTORE_FILE_PATH);
 
- const char* keyStorePath = keyStoreptr->value().c_str();
+  const char* keyStorePath = keyStoreptr->value().c_str();
 
- if (keyStorePath == NULL) {
-   throw AuthenticationFailedException(
-       "PKCSAuthInit::getCredentials: "
-       "key-store file path property KEYSTORE_FILE_PATH not set.");
+  if (keyStorePath == NULL) {
+    throw AuthenticationFailedException(
+        "PKCSAuthInit::getCredentials: "
+        "key-store file path property KEYSTORE_FILE_PATH not set.");
   }
 
- auto aliasptr = securityprops->find(KEYSTORE_ALIAS);
+  auto aliasptr = securityprops->find(KEYSTORE_ALIAS);
 
- const char* alias = aliasptr->value().c_str();
+  const char* alias = aliasptr->value().c_str();
 
- if (alias == NULL) {
-   throw AuthenticationFailedException(
-       "PKCSAuthInit::getCredentials: "
-       "key-store alias property KEYSTORE_ALIAS not set.");
+  if (alias == NULL) {
+    throw AuthenticationFailedException(
+        "PKCSAuthInit::getCredentials: "
+        "key-store alias property KEYSTORE_ALIAS not set.");
   }
 
- auto keyStorePassptr = securityprops->find(KEYSTORE_PASSWORD);
+  auto keyStorePassptr = securityprops->find(KEYSTORE_PASSWORD);
 
- const char* keyStorePass = keyStorePassptr->value().c_str();
+  const char* keyStorePass = keyStorePassptr->value().c_str();
 
- if (keyStorePass == NULL) {
-   throw AuthenticationFailedException(
-       "PKCSAuthInit::getCredentials: "
-       "key-store password property KEYSTORE_PASSWORD not set.");
+  if (keyStorePass == NULL) {
+    throw AuthenticationFailedException(
+        "PKCSAuthInit::getCredentials: "
+        "key-store password property KEYSTORE_PASSWORD not set.");
   }
 
   FILE* keyStoreFP = fopen(keyStorePath, "r");
diff --git a/templates/security/UserPasswordAuthInit.cpp b/templates/security/UserPasswordAuthInit.cpp
index 8420311..15630f1 100644
--- a/templates/security/UserPasswordAuthInit.cpp
+++ b/templates/security/UserPasswordAuthInit.cpp
@@ -19,6 +19,7 @@
 #include <geode/ExceptionTypes.hpp>
 #include <geode/CacheableString.hpp>
 
+#include "securityimpl_export.h"
 #include "UserPasswordAuthInit.hpp"
 
 #define SECURITY_USERNAME "security-username"
@@ -29,7 +30,7 @@ namespace geode {
 namespace client {
 
 extern "C" {
-_GEODE_LIBEXP AuthInitialize* createUserPasswordAuthInitInstance() {
+SECURITYIMPL_EXPORT AuthInitialize* createUserPasswordAuthInitInstance() {
   return new UserPasswordAuthInit();
 }
 }
diff --git a/tests/cli/PkcsWrapper/CMakeLists.txt b/tests/cli/PkcsWrapper/CMakeLists.txt
index e488142..ba1329a 100644
--- a/tests/cli/PkcsWrapper/CMakeLists.txt
+++ b/tests/cli/PkcsWrapper/CMakeLists.txt
@@ -16,7 +16,7 @@
 cmake_minimum_required(VERSION 3.10)
 project(PkcsWrapper LANGUAGES CXX)
 
-add_library(${PROJECT_NAME} SHARED 
+add_library(PkcsWrapper SHARED 
   PkcsAuthInitMN.cpp
   PkcsAuthInitMN.hpp
 )
@@ -27,7 +27,7 @@ target_compile_options(${PROJECT_NAME}
 	/wd4947
 )
 
-set_target_properties(${PROJECT_NAME} PROPERTIES
+set_target_properties(PkcsWrapper PROPERTIES
   VS_GLOBAL_CLRSupport "true"
   VS_GLOBAL_KEYWORD "ManagedCProj"
   VS_GLOBAL_PROJECT_TYPES "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"
@@ -36,15 +36,18 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
   VS_DOTNET_REFERENCES "System;System.Xml"
 )
 
-target_link_libraries(${PROJECT_NAME}
+target_link_libraries(PkcsWrapper
   PUBLIC 
-    Apache.Geode
+    # Apache.Geode #- Causes include of .lib
   PRIVATE
 	c++cli
     c++11
     security
 )
 
+# Makes project only reference, no .lib.
+add_dependencies(PkcsWrapper Apache.Geode)
+
 include_directories(${CMAKE_SOURCE_DIR}/clicache/src)
 include_directories(${CMAKE_SOURCE_DIR}/tests/cpp/security)
 
@@ -52,4 +55,4 @@ string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${SHARED_LINKER_FLAGS_STRONG_KEY}")
 
 # For Visual Studio organization
-set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER test/cliTests)
+set_target_properties(PkcsWrapper PROPERTIES FOLDER test/cliTests)
diff --git a/tests/cli/QueryHelper/CMakeLists.txt b/tests/cli/QueryHelper/CMakeLists.txt
index 16a4135..7659007 100644
--- a/tests/cli/QueryHelper/CMakeLists.txt
+++ b/tests/cli/QueryHelper/CMakeLists.txt
@@ -16,13 +16,13 @@
 cmake_minimum_required(VERSION 3.10)
 project(QueryWrapper LANGUAGES CXX)
 
-add_library(${PROJECT_NAME} SHARED 
+add_library(QueryWrapper SHARED 
   AssemblyInfo.cpp
   QueryStringsM.cpp
   QueryStringsM.hpp
 )
 
-set_target_properties(${PROJECT_NAME} PROPERTIES
+set_target_properties(QueryWrapper PROPERTIES
   VS_GLOBAL_CLRSupport "true"
   VS_GLOBAL_KEYWORD "ManagedCProj"
   VS_GLOBAL_PROJECT_TYPES "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"
@@ -31,28 +31,31 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
   VS_DOTNET_REFERENCES "System;System.Xml"
 )
 
-target_compile_options(${PROJECT_NAME}
+target_compile_options(QueryWrapper
   PRIVATE
 	# disabled warnings
 	/wd4947
 )
 
-target_include_directories(${PROJECT_NAME}
+target_include_directories(QueryWrapper
   PRIVATE
     $<BUILD_INTERFACE:$<TARGET_PROPERTY:Apache.Geode,SOURCE_DIR>>
     $<BUILD_INTERFACE:$<TARGET_PROPERTY:testThinClientRemoteQueryRS,SOURCE_DIR>>
 )
 
-target_link_libraries(${PROJECT_NAME}
+target_link_libraries(QueryWrapper
   PUBLIC 
-    Apache.Geode
+    # Apache.Geode #- Causes include of .lib
   PRIVATE
     c++cli
     c++11
 )
 
+# Makes project only reference, no .lib.
+add_dependencies(QueryWrapper Apache.Geode)
+
 string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${SHARED_LINKER_FLAGS_STRONG_KEY}")
 
 # For Visual Studio organization
-set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER test/cliTests)
+set_target_properties(QueryWrapper PROPERTIES FOLDER test/cliTests)
diff --git a/tests/cpp/security/CMakeLists.txt b/tests/cpp/security/CMakeLists.txt
index 498008d..08efeaa 100644
--- a/tests/cpp/security/CMakeLists.txt
+++ b/tests/cpp/security/CMakeLists.txt
@@ -16,7 +16,7 @@
 cmake_minimum_required(VERSION 3.10)
 project(security LANGUAGES CXX)
 
-add_library(${PROJECT_NAME} STATIC
+add_library(security STATIC
   CredentialGenerator.cpp
   CredentialGenerator.hpp
   DummyCredentialGenerator.hpp
@@ -33,12 +33,17 @@ add_library(${PROJECT_NAME} STATIC
   XmlAuthzCredentialGenerator.hpp
 )
 
-target_include_directories(${PROJECT_NAME}
+include(GenerateExportHeader)
+generate_export_header(security)
+
+target_include_directories(security
+  PUBLIC
+	$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
   PRIVATE
 	$<TARGET_PROPERTY:apache-geode,SOURCE_DIR>/../src
 )
 
-target_link_libraries(${PROJECT_NAME}
+target_link_libraries(security
   PUBLIC
     fwk
     testobject
@@ -50,4 +55,4 @@ target_link_libraries(${PROJECT_NAME}
 )
 
 # For Visual Studio organization
-set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER test)
+set_target_properties(security PROPERTIES FOLDER test)
diff --git a/tests/cpp/security/PkcsAuthInit.cpp b/tests/cpp/security/PkcsAuthInit.cpp
index 61e6eee..33babe7 100644
--- a/tests/cpp/security/PkcsAuthInit.cpp
+++ b/tests/cpp/security/PkcsAuthInit.cpp
@@ -26,6 +26,7 @@
 
 #include "SerializationRegistry.hpp"
 #include "PkcsAuthInit.hpp"
+#include "security_export.h"
 
 namespace apache {
 namespace geode {
@@ -53,7 +54,7 @@ std::shared_ptr<CacheableString> convertBytesToString(const uint8_t* bytes,
 }
 
 extern "C" {
-_GEODE_LIBEXP AuthInitialize* createPKCSAuthInitInstance() {
+SECURITY_EXPORT AuthInitialize* createPKCSAuthInitInstance() {
   return new PKCSAuthInitInternal();
 }
 
diff --git a/tests/cpp/testobject/ArrayOfByte.hpp b/tests/cpp/testobject/ArrayOfByte.hpp
index d0e4970..803646d 100644
--- a/tests/cpp/testobject/ArrayOfByte.hpp
+++ b/tests/cpp/testobject/ArrayOfByte.hpp
@@ -29,15 +29,7 @@
 #include "DataInputInternal.hpp"
 #include "DataOutputInternal.hpp"
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 using namespace testframework;
@@ -70,8 +62,7 @@ class TESTOBJECT_EXPORT ArrayOfByte {
       int32_t rsiz = (bufSize <= 20) ? bufSize : 20;
       GsRandom::getAlphanumericString(rsiz, buf);
       memcpy(buf, dos.getBuffer(), dos.getBufferLength());
-      return CacheableBytes::create(std::vector<int8_t>(buf, buf +
-                                          bufSize));
+      return CacheableBytes::create(std::vector<int8_t>(buf, buf + bufSize));
     } else if (encodeTimestamp) {
       FWKEXCEPTION("Should not happen");
     } else {
@@ -85,8 +76,9 @@ class TESTOBJECT_EXPORT ArrayOfByte {
       throw apache::geode::client::IllegalArgumentException(
           "the bytes arg was null");
     }
-    DataInputInternal di(reinterpret_cast<const uint8_t *>(bytes->value().data()),
-                         bytes->length(), nullptr);
+    DataInputInternal di(
+        reinterpret_cast<const uint8_t *>(bytes->value().data()),
+        bytes->length(), nullptr);
     try {
       di.readInt32();
       int64_t timestamp = di.readInt64();
@@ -101,8 +93,9 @@ class TESTOBJECT_EXPORT ArrayOfByte {
 
   static void resetTimestamp(std::shared_ptr<CacheableBytes> bytes,
                              SerializationRegistry &serializationRegistry) {
-    DataInputInternal di(reinterpret_cast<const uint8_t *>(bytes->value().data()),
-                         bytes->length(), nullptr);
+    DataInputInternal di(
+        reinterpret_cast<const uint8_t *>(bytes->value().data()),
+        bytes->length(), nullptr);
     int32_t index;
     try {
       index = di.readInt32();
diff --git a/tests/cpp/testobject/BatchObject.hpp b/tests/cpp/testobject/BatchObject.hpp
index 64845f7..d73c3b0 100644
--- a/tests/cpp/testobject/BatchObject.hpp
+++ b/tests/cpp/testobject/BatchObject.hpp
@@ -32,15 +32,7 @@
 #include <ace/OS.h>
 #include <ace/Time_Value.h>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 using namespace testframework;
diff --git a/tests/cpp/testobject/CMakeLists.txt b/tests/cpp/testobject/CMakeLists.txt
index b318261..854d1db 100644
--- a/tests/cpp/testobject/CMakeLists.txt
+++ b/tests/cpp/testobject/CMakeLists.txt
@@ -16,7 +16,7 @@
 cmake_minimum_required(VERSION 3.10)
 project(testobject LANGUAGES CXX)
 
-add_library(${PROJECT_NAME} SHARED 
+add_library(testobject SHARED 
   ArrayOfByte.hpp
   BatchObject.cpp
   BatchObject.hpp
@@ -68,19 +68,27 @@ add_library(${PROJECT_NAME} SHARED
   VariousPdxTypes.hpp
 )
 
-target_compile_definitions(${PROJECT_NAME}
+include(GenerateExportHeader)
+generate_export_header(testobject)
+
+target_include_directories(testobject
+  PUBLIC
+	$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>)
+
+target_compile_definitions(testobject
   PRIVATE
     -DBUILD_TESTOBJECT
 )
 
-target_include_directories(${PROJECT_NAME}
-	PUBLIC
-	  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+target_include_directories(testobject
+  PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
   PRIVATE
-	  $<TARGET_PROPERTY:apache-geode,SOURCE_DIR>/../src
+    $<TARGET_PROPERTY:apache-geode,SOURCE_DIR>/../src
 )
 
-target_link_libraries(${PROJECT_NAME}
+target_link_libraries(testobject
   PUBLIC 
     apache-geode
     fwk
@@ -90,4 +98,4 @@ target_link_libraries(${PROJECT_NAME}
 )
 
 # For Visual Studio organization
-set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER test)
+set_target_properties(testobject PROPERTIES FOLDER test)
diff --git a/tests/cpp/testobject/DeltaFastAssetAccount.hpp b/tests/cpp/testobject/DeltaFastAssetAccount.hpp
index 723a789..f0e9003 100644
--- a/tests/cpp/testobject/DeltaFastAssetAccount.hpp
+++ b/tests/cpp/testobject/DeltaFastAssetAccount.hpp
@@ -35,15 +35,7 @@
 
 #include "FastAsset.hpp"
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 using namespace testframework;
diff --git a/tests/cpp/testobject/DeltaPSTObject.hpp b/tests/cpp/testobject/DeltaPSTObject.hpp
index c6e050c..631930b 100644
--- a/tests/cpp/testobject/DeltaPSTObject.hpp
+++ b/tests/cpp/testobject/DeltaPSTObject.hpp
@@ -33,15 +33,7 @@
 #include <ace/OS.h>
 #include <ace/Time_Value.h>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 using namespace testframework;
diff --git a/tests/cpp/testobject/DeltaTestImpl.hpp b/tests/cpp/testobject/DeltaTestImpl.hpp
index ffb0f0c..e0ef63b 100644
--- a/tests/cpp/testobject/DeltaTestImpl.hpp
+++ b/tests/cpp/testobject/DeltaTestImpl.hpp
@@ -29,15 +29,7 @@
 #include "TestObject1.hpp"
 #include <geode/Delta.hpp>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 
diff --git a/tests/cpp/testobject/DeltaTestObj.hpp b/tests/cpp/testobject/DeltaTestObj.hpp
index d16f27d..3ca64f5 100644
--- a/tests/cpp/testobject/DeltaTestObj.hpp
+++ b/tests/cpp/testobject/DeltaTestObj.hpp
@@ -22,15 +22,7 @@
 
 #include "DeltaTestImpl.hpp"
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 using namespace testframework;
diff --git a/tests/cpp/testobject/EqStruct.hpp b/tests/cpp/testobject/EqStruct.hpp
index 315526d..f6d3877 100644
--- a/tests/cpp/testobject/EqStruct.hpp
+++ b/tests/cpp/testobject/EqStruct.hpp
@@ -32,15 +32,7 @@
 #include <ace/OS.h>
 #include <ace/Time_Value.h>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 using namespace testframework;
diff --git a/tests/cpp/testobject/FastAsset.hpp b/tests/cpp/testobject/FastAsset.hpp
index a00033e..f110b8c 100644
--- a/tests/cpp/testobject/FastAsset.hpp
+++ b/tests/cpp/testobject/FastAsset.hpp
@@ -32,15 +32,7 @@
 #include <ace/OS.h>
 #include <ace/Time_Value.h>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 using namespace testframework;
diff --git a/tests/cpp/testobject/FastAssetAccount.hpp b/tests/cpp/testobject/FastAssetAccount.hpp
index f9f6277..d210748 100644
--- a/tests/cpp/testobject/FastAssetAccount.hpp
+++ b/tests/cpp/testobject/FastAssetAccount.hpp
@@ -32,15 +32,7 @@
 #include <ace/OS.h>
 #include <ace/Time_Value.h>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 using namespace testframework;
diff --git a/tests/cpp/testobject/InvalidPdxUsage.hpp b/tests/cpp/testobject/InvalidPdxUsage.hpp
index e50d852..2004ee3 100644
--- a/tests/cpp/testobject/InvalidPdxUsage.hpp
+++ b/tests/cpp/testobject/InvalidPdxUsage.hpp
@@ -33,15 +33,7 @@
 #include <geode/PdxReader.hpp>
 #include <util/Log.hpp>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 
diff --git a/tests/cpp/testobject/NestedPdxObject.hpp b/tests/cpp/testobject/NestedPdxObject.hpp
index b2d3379..ea6bd66 100644
--- a/tests/cpp/testobject/NestedPdxObject.hpp
+++ b/tests/cpp/testobject/NestedPdxObject.hpp
@@ -30,15 +30,7 @@
 #include <geode/PdxReader.hpp>
 #include <util/Log.hpp>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 
diff --git a/tests/cpp/testobject/NonPdxType.hpp b/tests/cpp/testobject/NonPdxType.hpp
index 5867a2f..1683076 100644
--- a/tests/cpp/testobject/NonPdxType.hpp
+++ b/tests/cpp/testobject/NonPdxType.hpp
@@ -32,15 +32,7 @@
 #include <geode/PdxWrapper.hpp>
 #include <util/Log.hpp>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 
diff --git a/tests/cpp/testobject/NoopAuthInit.cpp b/tests/cpp/testobject/NoopAuthInit.cpp
index 3085062..deeb282 100644
--- a/tests/cpp/testobject/NoopAuthInit.cpp
+++ b/tests/cpp/testobject/NoopAuthInit.cpp
@@ -20,12 +20,14 @@
 #include "geode/ExceptionTypes.hpp"
 #include <util/Log.hpp>
 
+#include "testobject_export.h"
+
 namespace apache {
 namespace geode {
 namespace client {
 
 extern "C" {
-_GEODE_LIBEXP AuthInitialize* createNoopAuthInitInstance() {
+TESTOBJECT_EXPORT AuthInitialize* createNoopAuthInitInstance() {
   LOGINFO("rjk: calling createNoopAuthInitInstance");
   return new NoopAuthInit();
 }
diff --git a/tests/cpp/testobject/PSTObject.hpp b/tests/cpp/testobject/PSTObject.hpp
index 4188064..0a6f90b 100644
--- a/tests/cpp/testobject/PSTObject.hpp
+++ b/tests/cpp/testobject/PSTObject.hpp
@@ -32,15 +32,7 @@
 #include <ace/OS.h>
 #include <ace/Time_Value.h>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 using namespace testframework;
diff --git a/tests/cpp/testobject/PdxClassV1.hpp b/tests/cpp/testobject/PdxClassV1.hpp
index b6654fc..86d773f 100644
--- a/tests/cpp/testobject/PdxClassV1.hpp
+++ b/tests/cpp/testobject/PdxClassV1.hpp
@@ -33,15 +33,7 @@
 #include <util/Log.hpp>
 #include <util/Log.hpp>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 
diff --git a/tests/cpp/testobject/PdxClassV2.hpp b/tests/cpp/testobject/PdxClassV2.hpp
index 0e4588b..7bce38f 100644
--- a/tests/cpp/testobject/PdxClassV2.hpp
+++ b/tests/cpp/testobject/PdxClassV2.hpp
@@ -33,15 +33,7 @@
 #include <util/Log.hpp>
 #include <util/Log.hpp>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 
diff --git a/tests/cpp/testobject/PdxType.hpp b/tests/cpp/testobject/PdxType.hpp
index 74b71d8..dc7658f 100644
--- a/tests/cpp/testobject/PdxType.hpp
+++ b/tests/cpp/testobject/PdxType.hpp
@@ -33,15 +33,7 @@
 #include <geode/CacheableObjectArray.hpp>
 #include <util/Log.hpp>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 
diff --git a/tests/cpp/testobject/PdxVersioned1.hpp b/tests/cpp/testobject/PdxVersioned1.hpp
index 8ee1fee..5b6c237 100644
--- a/tests/cpp/testobject/PdxVersioned1.hpp
+++ b/tests/cpp/testobject/PdxVersioned1.hpp
@@ -32,15 +32,7 @@
 #include <geode/PdxReader.hpp>
 #include "fwklib/FwkExport.hpp"
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 
diff --git a/tests/cpp/testobject/PdxVersioned2.hpp b/tests/cpp/testobject/PdxVersioned2.hpp
index 041c444..fe84779 100644
--- a/tests/cpp/testobject/PdxVersioned2.hpp
+++ b/tests/cpp/testobject/PdxVersioned2.hpp
@@ -32,15 +32,7 @@
 #include <geode/PdxReader.hpp>
 #include "fwklib/FwkExport.hpp"
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 
diff --git a/tests/cpp/testobject/Position.hpp b/tests/cpp/testobject/Position.hpp
index ef44534..7944e7c 100644
--- a/tests/cpp/testobject/Position.hpp
+++ b/tests/cpp/testobject/Position.hpp
@@ -28,15 +28,7 @@
 
 #include <geode/CacheableString.hpp>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 namespace testobject {
 
diff --git a/tests/cpp/testobject/PositionPdx.hpp b/tests/cpp/testobject/PositionPdx.hpp
index 9b5f05f..22bd053 100644
--- a/tests/cpp/testobject/PositionPdx.hpp
+++ b/tests/cpp/testobject/PositionPdx.hpp
@@ -29,15 +29,7 @@
 #include <geode/PdxReader.hpp>
 #include <string>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 namespace testobject {
 
diff --git a/tests/cpp/testobject/TestObject1.hpp b/tests/cpp/testobject/TestObject1.hpp
index 1ca455e..aaf73f9 100644
--- a/tests/cpp/testobject/TestObject1.hpp
+++ b/tests/cpp/testobject/TestObject1.hpp
@@ -23,15 +23,7 @@
 #include <geode/CacheableBuiltins.hpp>
 #include <string>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 namespace testobject {
@@ -45,7 +37,9 @@ class TESTOBJECT_EXPORT TestObject1 : public Cacheable {
  public:
   TestObject1();
   TestObject1(int32_t id)
-      : name(nullptr), arr(CacheableBytes::create(std::vector<int8_t>(4 * 1024))), identifier(id) {}
+      : name(nullptr),
+        arr(CacheableBytes::create(std::vector<int8_t>(4 * 1024))),
+        identifier(id) {}
   TestObject1(std::string& str, int32_t id);
   TestObject1(TestObject1& rhs);
   void toData(DataOutput& output) const override;
diff --git a/tests/cpp/testobject/TimestampedObject.hpp b/tests/cpp/testobject/TimestampedObject.hpp
index 574065d..807b114 100644
--- a/tests/cpp/testobject/TimestampedObject.hpp
+++ b/tests/cpp/testobject/TimestampedObject.hpp
@@ -20,15 +20,7 @@
 #ifndef GEODE_TESTOBJECT_TIMESTAMPEDOBJECT_H_
 #define GEODE_TESTOBJECT_TIMESTAMPEDOBJECT_H_
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 namespace testobject {
 
diff --git a/tests/cpp/testobject/VariousPdxTypes.hpp b/tests/cpp/testobject/VariousPdxTypes.hpp
index f1787b4..feac921 100644
--- a/tests/cpp/testobject/VariousPdxTypes.hpp
+++ b/tests/cpp/testobject/VariousPdxTypes.hpp
@@ -24,15 +24,7 @@
 #include <geode/PdxWriter.hpp>
 #include <geode/PdxReader.hpp>
 
-#ifdef _WIN32
-#ifdef BUILD_TESTOBJECT
-#define TESTOBJECT_EXPORT _GEODE_LIBEXP
-#else
-#define TESTOBJECT_EXPORT _GEODE_LIBIMP
-#endif
-#else
-#define TESTOBJECT_EXPORT
-#endif
+#include "testobject_export.h"
 
 using namespace apache::geode::client;
 

-- 
To stop receiving notification emails like this one, please contact
jbarrett@apache.org.