You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by is...@apache.org on 2020/09/24 23:21:48 UTC

[ignite] branch master updated: IGNITE-13174 C++: Add CMake support for Windows

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

isapego pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new f37ec9e  IGNITE-13174 C++: Add CMake support for Windows
f37ec9e is described below

commit f37ec9eece4db627f2d5190e589f0522e445a251
Author: Igor Sapego <is...@apache.org>
AuthorDate: Fri Sep 25 02:20:10 2020 +0300

    IGNITE-13174 C++: Add CMake support for Windows
---
 modules/platforms/cpp/CMakeLists.txt               |  4 ++
 modules/platforms/cpp/binary/CMakeLists.txt        |  2 +
 .../include/ignite/impl/binary/binary_field_meta.h |  4 +-
 .../ignite/impl/binary/binary_object_impl.h        |  2 +-
 .../include/ignite/impl/binary/binary_type_impl.h  |  2 +-
 .../ignite/impl/binary/binary_type_snapshot.h      |  4 +-
 .../binary/src/impl/binary/binary_field_meta.cpp   |  4 +-
 .../binary/src/impl/binary/binary_object_impl.cpp  |  2 +-
 .../src/impl/binary/binary_type_snapshot.cpp       |  4 +-
 modules/platforms/cpp/cmake/FindIgnite.cmake       | 27 ++++++++----
 modules/platforms/cpp/cmake/FindODBC.cmake         |  9 +++-
 modules/platforms/cpp/common/CMakeLists.txt        |  2 +
 .../cpp/common/include/ignite/common/big_integer.h | 14 +++----
 .../cpp/common/include/ignite/common/decimal.h     | 14 +++----
 .../common/include/ignite/common/platform_utils.h  |  2 +-
 .../cpp/common/include/ignite/common/utils.h       | 12 +++---
 .../common/os/linux/src/common/platform_utils.cpp  |  2 +-
 .../os/win/include/ignite/common/concurrent_os.h   |  2 +-
 .../common/os/win/src/common/platform_utils.cpp    |  2 +-
 modules/platforms/cpp/common/src/common/utils.cpp  | 14 +++----
 modules/platforms/cpp/core-test/CMakeLists.txt     |  4 +-
 modules/platforms/cpp/core/CMakeLists.txt          |  4 ++
 modules/platforms/cpp/examples/CMakeLists.txt      |  2 +
 .../cpp/examples/compute-example/CMakeLists.txt    |  3 +-
 .../continuous-query-example/CMakeLists.txt        |  3 +-
 .../cpp/examples/odbc-example/CMakeLists.txt       |  8 +++-
 .../cpp/examples/put-get-example/CMakeLists.txt    |  3 +-
 .../cpp/examples/query-example/CMakeLists.txt      |  3 +-
 .../examples/query-example/src/query_example.cpp   | 48 ++++++++++++++--------
 .../thin-client-put-get-example/CMakeLists.txt     |  3 +-
 modules/platforms/cpp/jni/CMakeLists.txt           | 10 ++++-
 modules/platforms/cpp/network/CMakeLists.txt       |  5 ++-
 .../cpp/network/include/ignite/network/network.h   |  7 ++--
 .../cpp/network/include/ignite/network/utils.h     |  4 +-
 .../cpp/network/os/win/src/network/utils.cpp       |  2 +-
 .../platforms/cpp/network/src/network/network.cpp  |  6 +--
 modules/platforms/cpp/odbc-test/CMakeLists.txt     |  4 +-
 modules/platforms/cpp/odbc/CMakeLists.txt          | 12 +++---
 modules/platforms/cpp/thin-client/CMakeLists.txt   |  4 ++
 39 files changed, 168 insertions(+), 95 deletions(-)

diff --git a/modules/platforms/cpp/CMakeLists.txt b/modules/platforms/cpp/CMakeLists.txt
index 4492f04..cfebc78 100644
--- a/modules/platforms/cpp/CMakeLists.txt
+++ b/modules/platforms/cpp/CMakeLists.txt
@@ -42,6 +42,10 @@ if (WIN32)
     add_definitions(-DUNICODE=1)
 
     add_compile_options(/source-charset:utf-8)
+
+    set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
+
+    set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
 endif()
 
 option (WITH_ODBC OFF)
diff --git a/modules/platforms/cpp/binary/CMakeLists.txt b/modules/platforms/cpp/binary/CMakeLists.txt
index e1f5fad..c69d6e3 100644
--- a/modules/platforms/cpp/binary/CMakeLists.txt
+++ b/modules/platforms/cpp/binary/CMakeLists.txt
@@ -50,6 +50,8 @@ if (WIN32)
     add_library(${TARGET} SHARED $<TARGET_OBJECTS:${TARGET}-objlib>)
 
     list(APPEND _target_libs ${TARGET}-objlib)
+	
+	set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME "ignite.binary")
 else()
     add_library(${TARGET} SHARED ${SOURCES})
 endif()
diff --git a/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_field_meta.h b/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_field_meta.h
index 73864eb..70982f0 100644
--- a/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_field_meta.h
+++ b/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_field_meta.h
@@ -87,14 +87,14 @@ namespace ignite
                  *
                  * @param writer Writer.
                  */
-                void Write(ignite::binary::BinaryRawWriter& writer) const;
+                IGNITE_IMPORT_EXPORT void Write(ignite::binary::BinaryRawWriter& writer) const;
 
                 /**
                  * Read from data stream.
                  *
                  * @param reader reader.
                  */
-                void Read(ignite::binary::BinaryRawReader& reader);
+                IGNITE_IMPORT_EXPORT void Read(ignite::binary::BinaryRawReader& reader);
 
             private:
                 /** Type ID. */
diff --git a/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_object_impl.h b/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_object_impl.h
index 976ba29..21eb2d2 100644
--- a/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_object_impl.h
+++ b/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_object_impl.h
@@ -243,7 +243,7 @@ namespace ignite
 
             /* Specialization */
             template<>
-            BinaryObjectImpl BinaryObjectImpl::GetField(const char* name) const;
+            IGNITE_IMPORT_EXPORT BinaryObjectImpl BinaryObjectImpl::GetField(const char* name) const;
         }
     }
 }
diff --git a/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_type_impl.h b/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_type_impl.h
index c93ba20..8ed43c0 100644
--- a/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_type_impl.h
+++ b/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_type_impl.h
@@ -34,7 +34,7 @@ namespace ignite
         struct BinaryType;
 
         template<>
-        struct BinaryType<IgniteError>
+        struct IGNITE_IMPORT_EXPORT BinaryType<IgniteError>
         {
             static int32_t GetTypeId();
 
diff --git a/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_type_snapshot.h b/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_type_snapshot.h
index 186bb84..406b27a 100644
--- a/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_type_snapshot.h
+++ b/modules/platforms/cpp/binary/include/ignite/impl/binary/binary_type_snapshot.h
@@ -48,7 +48,7 @@ namespace ignite
                  * @param typeName Type name.
                  * @param typeId Type ID.
                  */
-                BinaryTypeSnapshot(std::string typeName, int32_t typeId);
+                IGNITE_IMPORT_EXPORT BinaryTypeSnapshot(std::string typeName, int32_t typeId);
 
                 /**
                  * Copy constructor.
@@ -115,7 +115,7 @@ namespace ignite
                  * @param fieldName Field name.
                  * @param fieldTypeId Field type ID.
                  */
-                void AddField(int32_t fieldId, const std::string& fieldName, int32_t fieldTypeId);
+                IGNITE_IMPORT_EXPORT void AddField(int32_t fieldId, const std::string& fieldName, int32_t fieldTypeId);
 
                 /**
                  * Copy fields from another snapshot.
diff --git a/modules/platforms/cpp/binary/src/impl/binary/binary_field_meta.cpp b/modules/platforms/cpp/binary/src/impl/binary/binary_field_meta.cpp
index 3d0b065..02dcbee 100644
--- a/modules/platforms/cpp/binary/src/impl/binary/binary_field_meta.cpp
+++ b/modules/platforms/cpp/binary/src/impl/binary/binary_field_meta.cpp
@@ -26,13 +26,13 @@ namespace ignite
     {
         namespace binary
         {
-            void BinaryFieldMeta::Write(ignite::binary::BinaryRawWriter& writer) const
+            IGNITE_IMPORT_EXPORT void BinaryFieldMeta::Write(ignite::binary::BinaryRawWriter& writer) const
             {
                 writer.WriteInt32(typeId);
                 writer.WriteInt32(fieldId);
             }
 
-            void BinaryFieldMeta::Read(ignite::binary::BinaryRawReader& reader)
+            IGNITE_IMPORT_EXPORT void BinaryFieldMeta::Read(ignite::binary::BinaryRawReader& reader)
             {
                 typeId = reader.ReadInt32();
                 fieldId = reader.ReadInt32();
diff --git a/modules/platforms/cpp/binary/src/impl/binary/binary_object_impl.cpp b/modules/platforms/cpp/binary/src/impl/binary/binary_object_impl.cpp
index b48e790..d322da3 100644
--- a/modules/platforms/cpp/binary/src/impl/binary/binary_object_impl.cpp
+++ b/modules/platforms/cpp/binary/src/impl/binary/binary_object_impl.cpp
@@ -91,7 +91,7 @@ namespace ignite
             }
 
             template<>
-            BinaryObjectImpl BinaryObjectImpl::GetField(const char* name) const
+            IGNITE_IMPORT_EXPORT BinaryObjectImpl BinaryObjectImpl::GetField(const char* name) const
             {
                 CheckIdResolver();
 
diff --git a/modules/platforms/cpp/binary/src/impl/binary/binary_type_snapshot.cpp b/modules/platforms/cpp/binary/src/impl/binary/binary_type_snapshot.cpp
index 05962b1..d6d42c0 100644
--- a/modules/platforms/cpp/binary/src/impl/binary/binary_type_snapshot.cpp
+++ b/modules/platforms/cpp/binary/src/impl/binary/binary_type_snapshot.cpp
@@ -23,7 +23,7 @@ namespace ignite
     {
         namespace binary
         {
-            BinaryTypeSnapshot::BinaryTypeSnapshot(std::string typeName, int32_t typeId) :
+            IGNITE_IMPORT_EXPORT BinaryTypeSnapshot::BinaryTypeSnapshot(std::string typeName, int32_t typeId) :
                 typeName(typeName),
                 typeId(typeId),
                 fieldIds(),
@@ -41,7 +41,7 @@ namespace ignite
                 // No-op.
             }
 
-            void BinaryTypeSnapshot::AddField(int32_t fieldId, const std::string& fieldName, int32_t fieldTypeId)
+            IGNITE_IMPORT_EXPORT void BinaryTypeSnapshot::AddField(int32_t fieldId, const std::string& fieldName, int32_t fieldTypeId)
             {
                 fieldIds.insert(fieldId);
                 fields[fieldName] = BinaryFieldMeta(fieldTypeId, fieldId);
diff --git a/modules/platforms/cpp/cmake/FindIgnite.cmake b/modules/platforms/cpp/cmake/FindIgnite.cmake
index ffdb9e3..a5705e0 100644
--- a/modules/platforms/cpp/cmake/FindIgnite.cmake
+++ b/modules/platforms/cpp/cmake/FindIgnite.cmake
@@ -19,26 +19,37 @@ find_path(IGNITE_INCLUDE_DIR ignite/ignite.h
         HINTS ${IGNITE_CPP_DIR}/include
         PATH_SUFFIXES ignite)
 
-find_library(IGNITE_LIB ignite HINTS ${IGNITE_CPP_DIR}/lib)
+if (WIN32)
+	find_library(IGNITE_LIB ignite.core HINTS ${IGNITE_CPP_DIR}/lib)
 
-find_library(IGNITE_COMMON_LIB ignite-common HINTS ${IGNITE_CPP_DIR}/lib)
+	find_library(IGNITE_COMMON_LIB ignite.common HINTS ${IGNITE_CPP_DIR}/lib)
 
-find_library(IGNITE_NETWORK_LIB ignite-network HINTS ${IGNITE_CPP_DIR}/lib)
+	find_library(IGNITE_NETWORK_LIB ignite.network HINTS ${IGNITE_CPP_DIR}/lib)
 
-find_library(IGNITE_JNI_LIB ignite-jni HINTS ${IGNITE_CPP_DIR}/lib)
+	find_library(IGNITE_JNI_LIB ignite.jni HINTS ${IGNITE_CPP_DIR}/lib)
 
-find_library(IGNITE_THIN_CLIENT_LIB ignite-thin-client HINTS ${IGNITE_CPP_DIR}/lib)
+	find_library(IGNITE_THIN_CLIENT_LIB ignite.thin-client HINTS ${IGNITE_CPP_DIR}/lib)
 
-find_library(IGNITE_ODBC_LIB ignite-odbc HINTS ${IGNITE_CPP_DIR}/lib)
+	find_library(IGNITE_BINARY_LIB ignite.binary HINTS ${IGNITE_CPP_DIR}/lib)
+else()
+	find_library(IGNITE_LIB ignite HINTS ${IGNITE_CPP_DIR}/lib)
 
-find_library(IGNITE_BINARY_LIB ignite-binary HINTS ${IGNITE_CPP_DIR}/lib)
+	find_library(IGNITE_COMMON_LIB ignite-common HINTS ${IGNITE_CPP_DIR}/lib)
+
+	find_library(IGNITE_NETWORK_LIB ignite-network HINTS ${IGNITE_CPP_DIR}/lib)
+
+	find_library(IGNITE_JNI_LIB ignite-jni HINTS ${IGNITE_CPP_DIR}/lib)
+
+	find_library(IGNITE_THIN_CLIENT_LIB ignite-thin-client HINTS ${IGNITE_CPP_DIR}/lib)
+
+	find_library(IGNITE_BINARY_LIB ignite-binary HINTS ${IGNITE_CPP_DIR}/lib)	
+endif()
 
 include(FindPackageHandleStandardArgs)
 
 find_package_handle_standard_args(Ignite DEFAULT_MSG
         IGNITE_LIB
         IGNITE_THIN_CLIENT_LIB
-        IGNITE_ODBC_LIB
         IGNITE_BINARY_LIB
         IGNITE_NETWORK_LIB
         IGNITE_COMMON_LIB
diff --git a/modules/platforms/cpp/cmake/FindODBC.cmake b/modules/platforms/cpp/cmake/FindODBC.cmake
index 33817c8..4886cc0 100644
--- a/modules/platforms/cpp/cmake/FindODBC.cmake
+++ b/modules/platforms/cpp/cmake/FindODBC.cmake
@@ -9,7 +9,14 @@ set(_odbc_required_libs_names)
 
 ### Try Windows Kits ##########################################################
 if(WIN32)
-    set(_odbc_lib_names odbc32;)
+	# List names of ODBC libraries on Windows
+	if(NOT MINGW)
+		set(ODBC_LIBRARY odbc32.lib)
+	else()
+		set(ODBC_LIBRARY libodbc32.a)
+	endif()
+    
+	set(_odbc_lib_names odbc32;)
 
     # List additional libraries required to use ODBC library
     if(MSVC OR CMAKE_CXX_COMPILER_ID MATCHES "Intel")
diff --git a/modules/platforms/cpp/common/CMakeLists.txt b/modules/platforms/cpp/common/CMakeLists.txt
index 7ea0638..9d40af9 100644
--- a/modules/platforms/cpp/common/CMakeLists.txt
+++ b/modules/platforms/cpp/common/CMakeLists.txt
@@ -54,6 +54,8 @@ if (WIN32)
     add_library(${TARGET}-objlib OBJECT ${SOURCES})
 
     add_library(${TARGET} SHARED $<TARGET_OBJECTS:${TARGET}-objlib>)
+	
+	set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME "ignite.common")
 
     list(APPEND _target_libs ${TARGET}-objlib)
 else()
diff --git a/modules/platforms/cpp/common/include/ignite/common/big_integer.h b/modules/platforms/cpp/common/include/ignite/common/big_integer.h
index ceddd8f..0899bf1 100644
--- a/modules/platforms/cpp/common/include/ignite/common/big_integer.h
+++ b/modules/platforms/cpp/common/include/ignite/common/big_integer.h
@@ -32,7 +32,7 @@ namespace ignite
         /**
          * Big integer number implementation.
          */
-        class BigInteger
+        class IGNITE_IMPORT_EXPORT BigInteger
         {
             friend class Decimal;
         public:
@@ -471,7 +471,7 @@ namespace ignite
          * @param val2 Second value.
          * @return True if equal.
          */
-        bool IGNITE_IMPORT_EXPORT operator==(const BigInteger& val1, const BigInteger& val2);
+        IGNITE_IMPORT_EXPORT bool operator==(const BigInteger& val1, const BigInteger& val2);
 
         /**
          * Comparison operator.
@@ -480,7 +480,7 @@ namespace ignite
          * @param val2 Second value.
          * @return True if not equal.
          */
-        bool IGNITE_IMPORT_EXPORT operator!=(const BigInteger& val1, const BigInteger& val2);
+        IGNITE_IMPORT_EXPORT bool operator!=(const BigInteger& val1, const BigInteger& val2);
 
         /**
          * Comparison operator.
@@ -489,7 +489,7 @@ namespace ignite
          * @param val2 Second value.
          * @return True if less.
          */
-        bool IGNITE_IMPORT_EXPORT operator<(const BigInteger& val1, const BigInteger& val2);
+        IGNITE_IMPORT_EXPORT bool operator<(const BigInteger& val1, const BigInteger& val2);
 
         /**
          * Comparison operator.
@@ -498,7 +498,7 @@ namespace ignite
          * @param val2 Second value.
          * @return True if less or equal.
          */
-        bool IGNITE_IMPORT_EXPORT operator<=(const BigInteger& val1, const BigInteger& val2);
+        IGNITE_IMPORT_EXPORT bool operator<=(const BigInteger& val1, const BigInteger& val2);
 
         /**
          * Comparison operator.
@@ -507,7 +507,7 @@ namespace ignite
          * @param val2 Second value.
          * @return True if gretter.
          */
-        bool IGNITE_IMPORT_EXPORT operator>(const BigInteger& val1, const BigInteger& val2);
+        IGNITE_IMPORT_EXPORT bool operator>(const BigInteger& val1, const BigInteger& val2);
 
         /**
          * Comparison operator.
@@ -516,7 +516,7 @@ namespace ignite
          * @param val2 Second value.
          * @return True if gretter or equal.
          */
-        bool IGNITE_IMPORT_EXPORT operator>=(const BigInteger& val1, const BigInteger& val2);
+        IGNITE_IMPORT_EXPORT bool operator>=(const BigInteger& val1, const BigInteger& val2);
     }
 }
 
diff --git a/modules/platforms/cpp/common/include/ignite/common/decimal.h b/modules/platforms/cpp/common/include/ignite/common/decimal.h
index cd3bbde..ac1238b 100644
--- a/modules/platforms/cpp/common/include/ignite/common/decimal.h
+++ b/modules/platforms/cpp/common/include/ignite/common/decimal.h
@@ -33,7 +33,7 @@ namespace ignite
         /**
          * Big decimal number implementation.
          */
-        class Decimal
+        class IGNITE_IMPORT_EXPORT Decimal
         {
         public:
             /**
@@ -475,7 +475,7 @@ namespace ignite
          * @param val2 Second value.
          * @return True if equal.
          */
-        bool IGNITE_IMPORT_EXPORT operator==(const Decimal& val1, const Decimal& val2);
+        IGNITE_IMPORT_EXPORT bool operator==(const Decimal& val1, const Decimal& val2);
 
         /**
          * Comparison operator.
@@ -484,7 +484,7 @@ namespace ignite
          * @param val2 Second value.
          * @return True if not equal.
          */
-        bool IGNITE_IMPORT_EXPORT operator!=(const Decimal& val1, const Decimal& val2);
+        IGNITE_IMPORT_EXPORT bool operator!=(const Decimal& val1, const Decimal& val2);
 
         /**
          * Comparison operator.
@@ -493,7 +493,7 @@ namespace ignite
          * @param val2 Second value.
          * @return True if less.
          */
-        bool IGNITE_IMPORT_EXPORT operator<(const Decimal& val1, const Decimal& val2);
+        IGNITE_IMPORT_EXPORT bool operator<(const Decimal& val1, const Decimal& val2);
 
         /**
          * Comparison operator.
@@ -502,7 +502,7 @@ namespace ignite
          * @param val2 Second value.
          * @return True if less or equal.
          */
-        bool IGNITE_IMPORT_EXPORT operator<=(const Decimal& val1, const Decimal& val2);
+        IGNITE_IMPORT_EXPORT bool operator<=(const Decimal& val1, const Decimal& val2);
 
         /**
          * Comparison operator.
@@ -511,7 +511,7 @@ namespace ignite
          * @param val2 Second value.
          * @return True if gretter.
          */
-        bool IGNITE_IMPORT_EXPORT operator>(const Decimal& val1, const Decimal& val2);
+        IGNITE_IMPORT_EXPORT bool operator>(const Decimal& val1, const Decimal& val2);
 
         /**
          * Comparison operator.
@@ -520,7 +520,7 @@ namespace ignite
          * @param val2 Second value.
          * @return True if gretter or equal.
          */
-        bool IGNITE_IMPORT_EXPORT operator>=(const Decimal& val1, const Decimal& val2);
+        IGNITE_IMPORT_EXPORT bool operator>=(const Decimal& val1, const Decimal& val2);
     }
 }
 
diff --git a/modules/platforms/cpp/common/include/ignite/common/platform_utils.h b/modules/platforms/cpp/common/include/ignite/common/platform_utils.h
index d9d5ec4..1adaf33 100644
--- a/modules/platforms/cpp/common/include/ignite/common/platform_utils.h
+++ b/modules/platforms/cpp/common/include/ignite/common/platform_utils.h
@@ -116,7 +116,7 @@ namespace ignite
          *
          * @return Random seed.
          */
-        unsigned GetRandSeed();
+        IGNITE_IMPORT_EXPORT unsigned GetRandSeed();
     }
 }
 
diff --git a/modules/platforms/cpp/common/include/ignite/common/utils.h b/modules/platforms/cpp/common/include/ignite/common/utils.h
index f4b5147..196c8df 100644
--- a/modules/platforms/cpp/common/include/ignite/common/utils.h
+++ b/modules/platforms/cpp/common/include/ignite/common/utils.h
@@ -391,7 +391,7 @@ namespace ignite
          * @param sec Sec.
          * @return Date.
          */
-        Date MakeDateGmt(int year = 1900, int month = 1,
+        IGNITE_FRIEND_EXPORT Date MakeDateGmt(int year = 1900, int month = 1,
             int day = 1, int hour = 0, int min = 0, int sec = 0);
 
         /**
@@ -407,7 +407,7 @@ namespace ignite
          * @param sec Sec.
          * @return Date.
          */
-        Date MakeDateLocal(int year = 1900, int month = 1,
+        IGNITE_FRIEND_EXPORT Date MakeDateLocal(int year = 1900, int month = 1,
             int day = 1, int hour = 0, int min = 0, int sec = 0);
 
         /**
@@ -420,7 +420,7 @@ namespace ignite
          * @param sec Second.
          * @return Time.
          */
-        Time MakeTimeGmt(int hour = 0, int min = 0, int sec = 0);
+        IGNITE_FRIEND_EXPORT Time MakeTimeGmt(int hour = 0, int min = 0, int sec = 0);
 
         /**
          * Make Time in human understandable way.
@@ -432,7 +432,7 @@ namespace ignite
          * @param sec Second.
          * @return Time.
          */
-        Time MakeTimeLocal(int hour = 0, int min = 0, int sec = 0);
+        IGNITE_FRIEND_EXPORT Time MakeTimeLocal(int hour = 0, int min = 0, int sec = 0);
 
         /**
          * Make Timestamp in human understandable way.
@@ -448,7 +448,7 @@ namespace ignite
          * @param ns Nanosecond.
          * @return Timestamp.
          */
-        Timestamp MakeTimestampGmt(int year = 1900, int month = 1,
+        IGNITE_FRIEND_EXPORT Timestamp MakeTimestampGmt(int year = 1900, int month = 1,
             int day = 1, int hour = 0, int min = 0, int sec = 0, long ns = 0);
 
         /**
@@ -465,7 +465,7 @@ namespace ignite
          * @param ns Nanosecond.
          * @return Timestamp.
          */
-        Timestamp MakeTimestampLocal(int year = 1900, int month = 1,
+        IGNITE_FRIEND_EXPORT Timestamp MakeTimestampLocal(int year = 1900, int month = 1,
             int day = 1, int hour = 0, int min = 0, int sec = 0, long ns = 0);
 
         /**
diff --git a/modules/platforms/cpp/common/os/linux/src/common/platform_utils.cpp b/modules/platforms/cpp/common/os/linux/src/common/platform_utils.cpp
index 4417db0..a03b999 100644
--- a/modules/platforms/cpp/common/os/linux/src/common/platform_utils.cpp
+++ b/modules/platforms/cpp/common/os/linux/src/common/platform_utils.cpp
@@ -124,7 +124,7 @@ namespace ignite
             return ostr;
         }
 
-        unsigned GetRandSeed()
+        IGNITE_IMPORT_EXPORT unsigned GetRandSeed()
         {
             timespec ts;
 
diff --git a/modules/platforms/cpp/common/os/win/include/ignite/common/concurrent_os.h b/modules/platforms/cpp/common/os/win/include/ignite/common/concurrent_os.h
index 75fc7dd..a4f6f58 100644
--- a/modules/platforms/cpp/common/os/win/include/ignite/common/concurrent_os.h
+++ b/modules/platforms/cpp/common/os/win/include/ignite/common/concurrent_os.h
@@ -152,7 +152,7 @@ namespace ignite
             /**
              * Primitives for atomic access.
              */
-            class Atomics
+            class IGNITE_IMPORT_EXPORT Atomics
             {
             public:
                 /**
diff --git a/modules/platforms/cpp/common/os/win/src/common/platform_utils.cpp b/modules/platforms/cpp/common/os/win/src/common/platform_utils.cpp
index b3f403d..9e2f68c 100644
--- a/modules/platforms/cpp/common/os/win/src/common/platform_utils.cpp
+++ b/modules/platforms/cpp/common/os/win/src/common/platform_utils.cpp
@@ -130,7 +130,7 @@ namespace ignite
             return ostr;
         }
 
-        unsigned GetRandSeed()
+        IGNITE_IMPORT_EXPORT unsigned GetRandSeed()
         {
             return static_cast<unsigned>(GetTickCount() ^ GetCurrentProcessId());
         }
diff --git a/modules/platforms/cpp/common/src/common/utils.cpp b/modules/platforms/cpp/common/src/common/utils.cpp
index 54a7d03..c1e0809 100644
--- a/modules/platforms/cpp/common/src/common/utils.cpp
+++ b/modules/platforms/cpp/common/src/common/utils.cpp
@@ -87,7 +87,7 @@ namespace ignite
             return value;
         }
 
-        Date MakeDateGmt(int year, int month, int day, int hour,
+        IGNITE_FRIEND_EXPORT Date MakeDateGmt(int year, int month, int day, int hour,
             int min, int sec)
         {
             tm date = { 0 };
@@ -102,7 +102,7 @@ namespace ignite
             return CTmToDate(date);
         }
 
-        Date MakeDateLocal(int year, int month, int day, int hour,
+        IGNITE_FRIEND_EXPORT Date MakeDateLocal(int year, int month, int day, int hour,
             int min, int sec)
         {
             tm date = { 0 };
@@ -119,7 +119,7 @@ namespace ignite
             return CTimeToDate(localTime);
         }
 
-        Time MakeTimeGmt(int hour, int min, int sec)
+        IGNITE_FRIEND_EXPORT Time MakeTimeGmt(int hour, int min, int sec)
         {
             tm date = { 0 };
 
@@ -133,7 +133,7 @@ namespace ignite
             return CTmToTime(date);
         }
 
-        Time MakeTimeLocal(int hour, int min, int sec)
+        IGNITE_FRIEND_EXPORT Time MakeTimeLocal(int hour, int min, int sec)
         {
             tm date = { 0 };
 
@@ -149,7 +149,7 @@ namespace ignite
             return CTimeToTime(localTime);
         }
 
-        Timestamp MakeTimestampGmt(int year, int month, int day,
+        IGNITE_FRIEND_EXPORT Timestamp MakeTimestampGmt(int year, int month, int day,
             int hour, int min, int sec, long ns)
         {
             tm date = { 0 };
@@ -164,7 +164,7 @@ namespace ignite
             return CTmToTimestamp(date, ns);
         }
 
-        Timestamp MakeTimestampLocal(int year, int month, int day,
+        IGNITE_FRIEND_EXPORT Timestamp MakeTimestampLocal(int year, int month, int day,
             int hour, int min, int sec, long ns)
         {
             tm date = { 0 };
@@ -181,7 +181,7 @@ namespace ignite
             return CTimeToTimestamp(localTime, ns);
         }
 
-        std::string GetDynamicLibraryName(const char* name)
+        IGNITE_IMPORT_EXPORT std::string GetDynamicLibraryName(const char* name)
         {
             std::stringstream libNameBuffer;
 
diff --git a/modules/platforms/cpp/core-test/CMakeLists.txt b/modules/platforms/cpp/core-test/CMakeLists.txt
index ba24021..416e95e 100644
--- a/modules/platforms/cpp/core-test/CMakeLists.txt
+++ b/modules/platforms/cpp/core-test/CMakeLists.txt
@@ -19,12 +19,12 @@ project(ignite-tests)
 
 set(TARGET ${PROJECT_NAME})
 
-find_package(Boost 1.53 REQUIRED COMPONENTS unit_test_framework chrono thread system)
-
 if (WIN32)
     set(Boost_USE_STATIC_LIBS ON)
 endif()
 
+find_package(Boost 1.53 REQUIRED COMPONENTS unit_test_framework chrono thread system)
+
 include_directories(include ${Boost_INCLUDE_DIRS} ${JNI_INCLUDE_DIRS})
 
 set(SOURCES src/reference_test.cpp
diff --git a/modules/platforms/cpp/core/CMakeLists.txt b/modules/platforms/cpp/core/CMakeLists.txt
index e84a8bb..8b1c513 100644
--- a/modules/platforms/cpp/core/CMakeLists.txt
+++ b/modules/platforms/cpp/core/CMakeLists.txt
@@ -46,6 +46,10 @@ add_library(${TARGET} SHARED ${SOURCES})
 
 set_target_properties(${TARGET} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION})
 
+if (WIN32)
+	set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME "ignite.core")
+endif()
+
 target_link_libraries(${TARGET} ignite-binary ignite-jni)
 
 target_include_directories(${TARGET} INTERFACE include)
diff --git a/modules/platforms/cpp/examples/CMakeLists.txt b/modules/platforms/cpp/examples/CMakeLists.txt
index 380eb8a..8c635f5 100644
--- a/modules/platforms/cpp/examples/CMakeLists.txt
+++ b/modules/platforms/cpp/examples/CMakeLists.txt
@@ -26,6 +26,8 @@ if (WIN32)
     add_definitions(-DUNICODE=1)
 
     add_compile_options(/source-charset:utf-8)
+
+    set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
 endif()
 
 add_subdirectory(compute-example)
diff --git a/modules/platforms/cpp/examples/compute-example/CMakeLists.txt b/modules/platforms/cpp/examples/compute-example/CMakeLists.txt
index 315477b..6fc1cf7 100644
--- a/modules/platforms/cpp/examples/compute-example/CMakeLists.txt
+++ b/modules/platforms/cpp/examples/compute-example/CMakeLists.txt
@@ -28,4 +28,5 @@ include_directories(../include ${IGNITE_INCLUDE_DIR} ${JNI_INCLUDE_DIRS})
 
 add_executable(${TARGET} src/compute_example.cpp)
 
-target_link_libraries(${TARGET} ${IGNITE_LIB} ${IGNITE_BINARY_LIB} ${IGNITE_COMMON_LIB} ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(${TARGET} ${IGNITE_LIB} ${IGNITE_JNI_LIB}  ${IGNITE_BINARY_LIB} ${IGNITE_COMMON_LIB}
+        ${CMAKE_THREAD_LIBS_INIT})
diff --git a/modules/platforms/cpp/examples/continuous-query-example/CMakeLists.txt b/modules/platforms/cpp/examples/continuous-query-example/CMakeLists.txt
index e67ec89..31cb10f 100644
--- a/modules/platforms/cpp/examples/continuous-query-example/CMakeLists.txt
+++ b/modules/platforms/cpp/examples/continuous-query-example/CMakeLists.txt
@@ -28,4 +28,5 @@ include_directories(../include ${IGNITE_INCLUDE_DIR} ${JNI_INCLUDE_DIRS})
 
 add_executable(${TARGET} src/continuous_query_example.cpp)
 
-target_link_libraries(${TARGET} ${IGNITE_LIB} ${IGNITE_BINARY_LIB} ${IGNITE_COMMON_LIB} ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(${TARGET} ${IGNITE_LIB} ${IGNITE_JNI_LIB} ${IGNITE_BINARY_LIB} ${IGNITE_COMMON_LIB}
+        ${CMAKE_THREAD_LIBS_INIT})
diff --git a/modules/platforms/cpp/examples/odbc-example/CMakeLists.txt b/modules/platforms/cpp/examples/odbc-example/CMakeLists.txt
index 6fd6138..386558e 100644
--- a/modules/platforms/cpp/examples/odbc-example/CMakeLists.txt
+++ b/modules/platforms/cpp/examples/odbc-example/CMakeLists.txt
@@ -29,5 +29,9 @@ include_directories(../include ${IGNITE_INCLUDE_DIR} ${JNI_INCLUDE_DIRS})
 
 add_executable(${TARGET} src/odbc_example.cpp)
 
-target_link_libraries(${TARGET} ${IGNITE_LIB} ${IGNITE_BINARY_LIB} ${IGNITE_COMMON_LIB} ${ODBC_LIBRARY}
-        ${CMAKE_THREAD_LIBS_INIT})
+if (WIN32)
+    remove_definitions(-DUNICODE=1)
+endif()
+
+target_link_libraries(${TARGET} ${IGNITE_LIB} ${IGNITE_JNI_LIB} ${IGNITE_BINARY_LIB} ${IGNITE_COMMON_LIB}
+        ${ODBC_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
diff --git a/modules/platforms/cpp/examples/put-get-example/CMakeLists.txt b/modules/platforms/cpp/examples/put-get-example/CMakeLists.txt
index 0f3e8b2..fefb760 100644
--- a/modules/platforms/cpp/examples/put-get-example/CMakeLists.txt
+++ b/modules/platforms/cpp/examples/put-get-example/CMakeLists.txt
@@ -28,4 +28,5 @@ include_directories(../include ${IGNITE_INCLUDE_DIR} ${JNI_INCLUDE_DIRS})
 
 add_executable(${TARGET} src/put_get_example.cpp)
 
-target_link_libraries(${TARGET} ${IGNITE_LIB} ${IGNITE_BINARY_LIB} ${IGNITE_COMMON_LIB} ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(${TARGET} ${IGNITE_LIB} ${IGNITE_JNI_LIB} ${IGNITE_BINARY_LIB} ${IGNITE_COMMON_LIB}
+        ${CMAKE_THREAD_LIBS_INIT})
diff --git a/modules/platforms/cpp/examples/query-example/CMakeLists.txt b/modules/platforms/cpp/examples/query-example/CMakeLists.txt
index c2df0e3..4f543bc 100644
--- a/modules/platforms/cpp/examples/query-example/CMakeLists.txt
+++ b/modules/platforms/cpp/examples/query-example/CMakeLists.txt
@@ -28,4 +28,5 @@ include_directories(../include ${IGNITE_INCLUDE_DIR} ${JNI_INCLUDE_DIRS})
 
 add_executable(${TARGET} src/query_example.cpp)
 
-target_link_libraries(${TARGET} ${IGNITE_LIB} ${IGNITE_BINARY_LIB} ${IGNITE_COMMON_LIB} ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(${TARGET} ${IGNITE_LIB} ${IGNITE_JNI_LIB} ${IGNITE_BINARY_LIB} ${IGNITE_COMMON_LIB}
+        ${CMAKE_THREAD_LIBS_INIT})
diff --git a/modules/platforms/cpp/examples/query-example/src/query_example.cpp b/modules/platforms/cpp/examples/query-example/src/query_example.cpp
index 44fbe6c..bab74c4 100644
--- a/modules/platforms/cpp/examples/query-example/src/query_example.cpp
+++ b/modules/platforms/cpp/examples/query-example/src/query_example.cpp
@@ -74,7 +74,10 @@ void DoSqlQueryWithDistributedJoin()
     {
         QueryFieldsRow row = cursor.GetNext();
 
-        std::cout << row.GetNext<std::string>() << " " << row.GetNext<std::string>() << std::endl;
+        std::string firstName = row.GetNext<std::string>();
+        std::string lastName = row.GetNext<std::string>();
+
+        std::cout << firstName << " " << lastName << std::endl;
     }
 
     std::cout << std::endl;
@@ -92,7 +95,10 @@ void DoSqlQueryWithDistributedJoin()
     {
         QueryFieldsRow row = cursor.GetNext();
 
-        std::cout << row.GetNext<std::string>() << " " << row.GetNext<std::string>() << std::endl;
+        std::string firstName = row.GetNext<std::string>();
+        std::string lastName = row.GetNext<std::string>();
+
+        std::cout << firstName << " " << lastName << std::endl;
     }
 
     std::cout << std::endl;
@@ -125,8 +131,10 @@ void DoSqlQueryWithJoin()
     {
         QueryFieldsRow row = cursor.GetNext();
 
-        std::cout << row.GetNext<std::string>() << " is working in ";
-        std::cout << row.GetNext<std::string>() << std::endl;
+        std::string person = row.GetNext<std::string>();
+        std::string organization = row.GetNext<std::string>();
+
+        std::cout << person << " is working in " << organization << std::endl;
     }
 
     std::cout << std::endl;
@@ -151,7 +159,11 @@ void DoSqlQueryWithFunction()
 
     // In this particular case each row will have one element with full name of an employees.
     while (cursor.HasNext())
-        std::cout << cursor.GetNext().GetNext<std::string>() << std::endl;
+    {
+        std::string person = cursor.GetNext().GetNext<std::string>();
+
+        std::cout << person << std::endl;
+    }
 
     std::cout << std::endl;
 }
@@ -182,7 +194,11 @@ void DoSqlQueryWithAggregation()
     std::cout << "Average salary for 'ApacheIgnite' employees: " << std::endl;
 
     while (cursor.HasNext())
-        std::cout << cursor.GetNext().GetNext<double>() << std::endl;
+    {
+        double salary = cursor.GetNext().GetNext<double>();
+
+        std::cout << salary << std::endl;
+    }
 
     std::cout << std::endl;
 }
@@ -215,11 +231,11 @@ void DoSqlQuery()
     {
         QueryFieldsRow row = cursor.GetNext();
 
-        std::cout
-            << row.GetNext<std::string>() << " "
-            << row.GetNext<std::string>() << " : "
-            << row.GetNext<double>()
-            << std::endl;
+        std::string firstName = row.GetNext<std::string>();
+        std::string lastName = row.GetNext<std::string>();
+        double salary = row.GetNext<double>();
+
+        std::cout << firstName << " " << lastName << " : " << salary << std::endl;
     }
 
     std::cout << std::endl;
@@ -238,11 +254,11 @@ void DoSqlQuery()
     {
         QueryFieldsRow row = cursor.GetNext();
 
-        std::cout
-            << row.GetNext<std::string>() << " "
-            << row.GetNext<std::string>() << " : "
-            << row.GetNext<double>()
-            << std::endl;
+        std::string firstName = row.GetNext<std::string>();
+        std::string lastName = row.GetNext<std::string>();
+        double salary = row.GetNext<double>();
+
+        std::cout << firstName << " " << lastName << " : " << salary << std::endl;
     }
 
     std::cout << std::endl;
diff --git a/modules/platforms/cpp/examples/thin-client-put-get-example/CMakeLists.txt b/modules/platforms/cpp/examples/thin-client-put-get-example/CMakeLists.txt
index 7a00a34..fab5a1f 100644
--- a/modules/platforms/cpp/examples/thin-client-put-get-example/CMakeLists.txt
+++ b/modules/platforms/cpp/examples/thin-client-put-get-example/CMakeLists.txt
@@ -20,9 +20,10 @@ project(thin-client-put-get-example)
 set(TARGET ignite-${PROJECT_NAME})
 
 find_package(Ignite)
+find_package(Threads)
 
 include_directories(../include ${IGNITE_INCLUDE_DIR})
 
 add_executable(${TARGET} src/thin_client_put_get_example.cpp)
 
-target_link_libraries(${TARGET} ${IGNITE_THIN_CLIENT_LIB} ${IGNITE_BINARY_LIB} ${IGNITE_COMMON_LIB})
+target_link_libraries(${TARGET} ${IGNITE_THIN_CLIENT_LIB} ${IGNITE_BINARY_LIB} ${IGNITE_COMMON_LIB} ${CMAKE_THREAD_LIBS_INIT})
diff --git a/modules/platforms/cpp/jni/CMakeLists.txt b/modules/platforms/cpp/jni/CMakeLists.txt
index 75f83f6..0783c45 100644
--- a/modules/platforms/cpp/jni/CMakeLists.txt
+++ b/modules/platforms/cpp/jni/CMakeLists.txt
@@ -29,7 +29,7 @@ if (WIN32)
     list(APPEND SOURCES os/win/src/utils.cpp)
 else()
     list(APPEND SOURCES os/linux/src/utils.cpp)
-endif ()
+endif()
 
 add_library(${TARGET} SHARED ${SOURCES})
 
@@ -37,6 +37,14 @@ set_target_properties(${TARGET} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION})
 
 target_link_libraries(${TARGET} ignite-common ${JVM_LIBRARY})
 
+if (WIN32)
+    target_link_libraries(${TARGET} delayimp)
+
+    set_target_properties(${TARGET} PROPERTIES LINK_FLAGS "/DELAYLOAD:jvm.dll")
+	
+	set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME "ignite.jni")
+endif()
+
 target_include_directories(${TARGET} INTERFACE include)
 
 install(TARGETS ${TARGET} LIBRARY DESTINATION lib)
diff --git a/modules/platforms/cpp/network/CMakeLists.txt b/modules/platforms/cpp/network/CMakeLists.txt
index d450f7d..6665ab7 100644
--- a/modules/platforms/cpp/network/CMakeLists.txt
+++ b/modules/platforms/cpp/network/CMakeLists.txt
@@ -44,9 +44,12 @@ endif()
 list(APPEND _target_libs ${TARGET})
 if (WIN32)
     add_library(${TARGET}-objlib OBJECT ${SOURCES})
-    add_library(${TARGET} SHARED $<TARGET_OBJECTS:${TARGET}-objlib>)
+    
+	add_library(${TARGET} SHARED $<TARGET_OBJECTS:${TARGET}-objlib>)
 
     list(APPEND _target_libs ${TARGET}-objlib)
+	
+	set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME "ignite.network")
 else()
     add_library(${TARGET} SHARED ${SOURCES})
 endif()
diff --git a/modules/platforms/cpp/network/include/ignite/network/network.h b/modules/platforms/cpp/network/include/ignite/network/network.h
index 6bb07b3..5e83cc1 100644
--- a/modules/platforms/cpp/network/include/ignite/network/network.h
+++ b/modules/platforms/cpp/network/include/ignite/network/network.h
@@ -20,6 +20,7 @@
 
 #include <string>
 
+#include <ignite/common/common.h>
 #include <ignite/network/socket_client.h>
 
 namespace ignite
@@ -36,12 +37,12 @@ namespace ignite
              *
              * @throw IgniteError if it is not possible to load SSL library.
              */
-            void EnsureSslLoaded();
+            IGNITE_IMPORT_EXPORT void EnsureSslLoaded();
 
             /**
              * Make basic TCP socket.
              */
-            SocketClient* MakeTcpSocketClient();
+            IGNITE_IMPORT_EXPORT SocketClient* MakeTcpSocketClient();
 
             /**
              * Make secure socket for SSL/TLS connection.
@@ -52,7 +53,7 @@ namespace ignite
              *
              * @throw IgniteError if it is not possible to load SSL library.
              */
-            SocketClient* MakeSecureSocketClient(const std::string& certPath,
+            IGNITE_IMPORT_EXPORT SocketClient* MakeSecureSocketClient(const std::string& certPath,
                 const std::string& keyPath, const std::string& caPath);
         }
     }
diff --git a/modules/platforms/cpp/network/include/ignite/network/utils.h b/modules/platforms/cpp/network/include/ignite/network/utils.h
index f195784..e8f0851 100644
--- a/modules/platforms/cpp/network/include/ignite/network/utils.h
+++ b/modules/platforms/cpp/network/include/ignite/network/utils.h
@@ -21,6 +21,8 @@
 #include <set>
 #include <string>
 
+#include <ignite/common/common.h>
+
 namespace ignite
 {
     namespace network
@@ -32,7 +34,7 @@ namespace ignite
              *
              * @param addrs Addresses set.
              */
-            void GetLocalAddresses(std::set<std::string>& addrs);
+            void IGNITE_IMPORT_EXPORT GetLocalAddresses(std::set<std::string>& addrs);
         }
     }
 }
diff --git a/modules/platforms/cpp/network/os/win/src/network/utils.cpp b/modules/platforms/cpp/network/os/win/src/network/utils.cpp
index 1ff1aca..5fde3bf 100644
--- a/modules/platforms/cpp/network/os/win/src/network/utils.cpp
+++ b/modules/platforms/cpp/network/os/win/src/network/utils.cpp
@@ -37,7 +37,7 @@ namespace ignite
     {
         namespace utils
         {
-            void GetLocalAddresses(std::set<std::string>& addrs)
+            IGNITE_IMPORT_EXPORT void GetLocalAddresses(std::set<std::string>& addrs)
             {
                 IP_ADAPTER_ADDRESSES outAddrs[64];
 
diff --git a/modules/platforms/cpp/network/src/network/network.cpp b/modules/platforms/cpp/network/src/network/network.cpp
index b2ef23c..ab1b295 100644
--- a/modules/platforms/cpp/network/src/network/network.cpp
+++ b/modules/platforms/cpp/network/src/network/network.cpp
@@ -29,17 +29,17 @@ namespace ignite
     {
         namespace ssl
         {
-            void EnsureSslLoaded()
+            IGNITE_IMPORT_EXPORT void EnsureSslLoaded()
             {
                 SslGateway::GetInstance().LoadAll();
             }
 
-            SocketClient* MakeTcpSocketClient()
+            IGNITE_IMPORT_EXPORT SocketClient* MakeTcpSocketClient()
             {
                 return new TcpSocketClient;
             }
 
-            SocketClient* MakeSecureSocketClient(const std::string& certPath,
+            IGNITE_IMPORT_EXPORT SocketClient* MakeSecureSocketClient(const std::string& certPath,
                 const std::string& keyPath, const std::string& caPath)
             {
                 EnsureSslLoaded();
diff --git a/modules/platforms/cpp/odbc-test/CMakeLists.txt b/modules/platforms/cpp/odbc-test/CMakeLists.txt
index 72e27e2..9b87a60 100644
--- a/modules/platforms/cpp/odbc-test/CMakeLists.txt
+++ b/modules/platforms/cpp/odbc-test/CMakeLists.txt
@@ -19,12 +19,12 @@ project(ignite-odbc-tests)
 
 set(TARGET ${PROJECT_NAME})
 
-find_package(Boost 1.53 REQUIRED COMPONENTS unit_test_framework chrono thread system regex)
-
 if (WIN32)
     set(Boost_USE_STATIC_LIBS ON)
 endif()
 
+find_package(Boost 1.53 REQUIRED COMPONENTS unit_test_framework chrono thread system regex)
+
 find_package(ODBC REQUIRED)
 
 include_directories(include ../odbc/include ../network/include ${ODBC_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${JNI_INCLUDE_DIRS})
diff --git a/modules/platforms/cpp/odbc/CMakeLists.txt b/modules/platforms/cpp/odbc/CMakeLists.txt
index 5cbd99c..524d9bc 100644
--- a/modules/platforms/cpp/odbc/CMakeLists.txt
+++ b/modules/platforms/cpp/odbc/CMakeLists.txt
@@ -75,7 +75,8 @@ if (WIN32)
     list(APPEND SOURCES os/win/src/system_dsn.cpp
             os/win/src/system/ui/custom_window.cpp
             os/win/src/system/ui/dsn_configuration_window.cpp
-            os/win/src/system/ui/window.cpp)
+            os/win/src/system/ui/window.cpp
+            project/vs/module.def)
 endif ()
 
 add_library(${TARGET} SHARED ${SOURCES})
@@ -85,7 +86,7 @@ set_target_properties(${TARGET} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION})
 target_link_libraries(${TARGET} ${ODBC_LIBRARIES})
 
 if (WIN32)
-    target_link_libraries(${TARGET} ignite-common-objlib ignite-binary-objlib ignite-network-objlib shlwapi)
+    target_link_libraries(${TARGET} ignite-common-objlib ignite-binary-objlib ignite-network-objlib odbccp32 shlwapi)
 
     remove_definitions(-DUNICODE=1)
 
@@ -94,6 +95,8 @@ if (WIN32)
     if (MSVC_VERSION GREATER_EQUAL 1900)
         target_link_libraries(${TARGET} legacy_stdio_definitions)
     endif()
+				
+	set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME "ignite.odbc")
 else()
     target_link_libraries(${TARGET} ignite-common ignite-binary ignite-network)
 endif()
@@ -101,8 +104,3 @@ endif()
 target_include_directories(${TARGET} INTERFACE include)
 
 install(TARGETS ${TARGET} LIBRARY DESTINATION lib)
-install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include FILES_MATCHING PATTERN "*.h*")
-
-if (WIN32)
-    install(DIRECTORY os/win/include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include FILES_MATCHING PATTERN "*.h*")
-endif()
diff --git a/modules/platforms/cpp/thin-client/CMakeLists.txt b/modules/platforms/cpp/thin-client/CMakeLists.txt
index 988e13f..feb896a 100644
--- a/modules/platforms/cpp/thin-client/CMakeLists.txt
+++ b/modules/platforms/cpp/thin-client/CMakeLists.txt
@@ -42,6 +42,10 @@ add_library(${TARGET} SHARED ${SOURCES})
 
 set_target_properties(${TARGET} PROPERTIES VERSION ${CMAKE_PROJECT_VERSION})
 
+if (WIN32)
+	set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME "ignite.thin-client")
+endif()
+
 target_link_libraries(${TARGET} ignite-binary ignite-network)
 
 target_include_directories(${TARGET} INTERFACE include)