Я наконец решил ее, обновив библиотеку с 3.10 до 3.11.Библиотека 3.11 создается вручную с использованием g++-8.2
из исходного кода Hazelcast в Github.
, поскольку после сборки hazelcast-cpp-clienet нет пакета make install
поэтому я использую некоторые сценарии, чтобы расположить заголовочные файлы вместе в одном каталоге (hazelcast-cpp-client/include
), чтобы программа могла легко связать библиотеку и заголовки.
Сценарий сборки:
#!/bin/bash
# Package Requirements:
# - asio
mkdir hazelcast-cpp-client ; cd hazelcast-cpp-client
# Build
git clone https://github.com/hazelcast/hazelcast-cpp-client.git
mv hazelcast-cpp-client tmp
cd tmp
git checkout v3.11
mkdir release ; cd release
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE=Release ..
make
# Back to 'hazelcast-cpp-client' directory
cd ../..
# Copy .a library out from tmp/
cp tmp/release/*.a .
# Arrange all header files in an one directory
cp -r tmp/hazelcast/include .
cp -r tmp/hazelcast/generated-sources/include/hazelcast/client/protocol ./include/hazelcast/client
rm tmp/external/include/*.md # We don't need readme file
cp -r tmp/external/include/* ./include
# Delete tmp directory
rm -rf tmp
Компиляциякоманда выглядит так:
g++ -std=c++11 \
-I/path/to/hazelcast-cpp-client/include \
hz_test.cpp \
/path/to/hazelcast-cpp-client/libHazelcastClient3.11_64.a \
-lpthread