是否有解决方案,可以使用Hazelcast C++ client library使用g++-8.2
为项目进行编译?
如果我使用 g ++-8.2 进行编译,则会显示很多错误“ undefined reference ...”。
使用 g ++-4.9 时,效果很好。
问题有点像本google group forum中的讨论,该问题表明编译错误是由于编译器版本错误引起的。
但是,编译器 g ++-4.9 对于我来说太老了,无法构建我的大项目。
如果有人需要尝试,可以在official org website中找到示例代码。
答案 0 :(得分:1)
我终于通过将库从3.10升级到3.11解决了它。
3.11库是使用Github中的Hazelcast source code中的g++-8.2
手动构建的。
因为构建 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
答案 1 :(得分:0)
感谢您报告此问题。我们没有使用g ++-8.2编译器进行测试。我解决了一个问题:https://github.com/hazelcast/hazelcast-cpp-client/issues/494
您能告诉我您的操作系统环境吗?它是什么发行版和版本?