当前位置:   article > 正文

windows编译zookeeker动态库供C++链接使用以及遇到的错误处理方法

windows编译zookeeker动态库供C++链接使用以及遇到的错误处理方法

windows下面C++链接zookeeper资料不多,特此记录一下
编译环境VS 2015

一. 相关安装包安装下载

1. zookeeper

zookeeper3.6.4
下载zip包解压即可

2. ant

apache-ant-1.9.16
将包进行解压D:project\apache-ant-1.9.16,然后配置环境变量

新建 ANT_HOME 系统变量 D:project\apache-ant-1.9.16
添加 %ANT_HOME%\lib 到 CLASSPATH 系统变量中
添加 %ANT_HOME%\bin 到 PATH 系统变量中

完成之后保存退出进入cmd命令 执行 ant -version 进行验证

3. Maven

apache-maven-3.9.0
解压,修改conf/settings.xml配置文件,在标签中添加一个子节点并保存。

<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参考https://developer.aliyun.com/mvn/guide
配置环境变量

添加 D:project\apache-maven-3.9.0\bin 目录到 Path 环境变量中

完成之后保存退出进入cmd命令 执行 mvn --version 命令查看是否成功

4. Cmake

cmake下载
安装后还需要配置环境变量


二. 编译zookeeper

进入到zookeeper-release-3.6.4\zookeeper-jute 目录中
执行 mvn compile 命令
成功后进入 \zookeeper-client\zookeeper-client-c目录

如果是没有Java环境的话,执行mvn compile可能会报JDK找不到的问题,需要安装JDK并且配置环境变量

然后在该目录下创建一个空目录,build,进入并执行下列命令

cmake ./…
然后会在build目录下生成
#运行完成后再使用VS2015打开zookeeper.sln 文件即可进行编译

项目打开默认编译的是Win32,不是x64位的,需要改一下,配置管理器新建64位
在这里插入图片描述
项目默认编译的是zookeeper静态库,可以通过设置编译属性编译静态库

在这里插入图片描述

右击zookeeper属性,将扩展名和配置类型设置为动态库
在这里插入图片描述
编译可能会报模块计算机类型“X86”与目标计算机类型“x64”冲突,需要修改库管理器-命令行machine:X86改成machine:X64
在这里插入图片描述
编译成功后,Debug目录下会生成zookeeper.dll

新建一个include目录,放zookeeper的头文件
新建一个lib目录,放zookeeper.dll

然后Qt右键添加库,选择外部库,会发现动态库需要lib文件
在这里插入图片描述
这是因为vs没有将导入库lib生成,这里的lib库不是指静态库,而是引入库,如果直接强行导入dll库编译,代码中引用zk的函数会报找不到zk的相关符号。

参考 https://blog.csdn.net/dxm809/article/details/114527294
得知__declspec(dllexport)这个宏会决定是否生成lib导入库文件

我们打开zookeeper.h,可以看到如果定义了DLL_EXPORT,会使用__declspec(dllexport)
在这里插入图片描述
我们打开zookeeper的属性,在预处理器中的预处理定义添加DLL_EXPORT,然后重新编译生成,就会生成dll和lib,记得将dll和lib放在QT项目下。

在这里插入图片描述
QT编译可能还是会报找不到xxx函数符号等错误,是因为THREADED的问题,vs2015编译的时候,预处理定义添加了THREADED,lib肯定是存在的,然是QT使用zookeeper.h的时候并没有定义THREADED,可以在zookeeper.h加一行。

#define THREADED 1
  • 1

在这里插入图片描述

到此为止,zookeeper的相关接口可以正常调用。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/976346
推荐阅读
相关标签
  

闽ICP备14008679号