Clucene Windows上vs2022编译x64位教程

Clucene Windows上vs2022编译x64位教程

Clucene 编译网上教程不全,东拼西凑后成功编译。特此分享。

一 环境准备

1 本机环境:

Windows10
cmake 3.22.1
clucene 2.3.2
vs2022

2 Clucene源码下载

Clucene官网:https://clucene.sourceforge.net/download.shtml
使用git拉下最新代码:git clone git://clucene.git.sourceforge.net/gitroot/clucene/clucene
本机拉下代码为 D:\Clucene\clucene_2.3.2。

3 cmake 安装

自己参考一下网上教程,安装cmake。本机使用的是cmake3.22.1

二 cmake 生成clucene 工程

1 cmake选择源码目录和编译目录

如图我选择的是clucene_build 作为编译目录:
在这里插入图片描述
点击cmake 的configure。

2选择编译器

在这里插入图片描述
我选择的是vs2022 + x64 (编译32位选择win32)
然后点击finish,开始生成。
有些教程说缺少zlib 和 boost库,用此教程的源码仓库里面是包含这两个库的,无需额外配置

3 生成报错:printf could not be found处理

CMake Error at src/shared/cmake/MacroMustDefine.cmake:45 (MESSAGE):
printf could not be found

此错误需要在D:\Clucene\clucene_2.3.2/CMakeLists.txt 理解加入行:
SET(CMAKE_REQUIRED_LIBRARIES legacy_stdio_definitions.lib)
eg:
在这里插入图片描述
更改后点击delete cache,然后重新configure
在这里插入图片描述

4 生成成功

点击configure后,配置成功,再使用默认配置,点击Generate
Generate 有几个warning ,不管。点击Open Project,会自动用vs2022打开此工程
在这里插入图片描述

三 vs2022 编译clucene

1 vs 编译clucene

直接右键ALL_BUILD 工程,右键-》生成

2 编译报错snprintf

error C2084: 函数“int snprintf(char *const ,const size_t,const char *const ,…)”已有主体

解决方法:
打开D:\Clucene\clucene_build\src\shared\CLucene_clucene-config.h
注释掉71行 #define _snprintf snprintf
如图:
在这里插入图片描述

3 编译报错binary_function

error C2039: “binary_function”: 不是 “std” 的成员
error C2504: “binary_function”: 未定义基类

解决方法:
在D:\Clucene\clucene_2.3.2\src\core\CLucene\util\Equators.h 增加一行
在这里插入图片描述
然后ALL_BUILD就能编译通过了,输出dll:
D:\Clucene\clucene_build\bin\Debug\clucene-cored.dll

4 编译的时候报错找不到 unistd.h 文件

解决方法
创建unistd.h文件:

#ifndef _UNISTD_H

#define _UNISTD_H
#include <io.h>
#include <process.h>
#endif /* _UNISTD_H */

看cmake 生成的时候使用的是此处的vs:
在这里插入图片描述
所以将unistd.h文件,放在D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.40.33807\include目录即可

5 安装clucene

点击INSTALL工程,然后生成。报错:
error MSB3073: 命令“setlocal

使用管理员权限运行vs 重新生成INSTALL即可修复
最终输出目录:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值