准备工作
Visual Studio 2017 安装
作为Windows开发程序员,vs安装过程跳过,有需要自行百度搜索
CMake 安装
简单安装过程为 网上下载cmake 之后进行安装,安装步骤基本位下一步……,结束,过程比较简单并且也非本教程的重点,就此跳过。如果在安装过程中有碰到问题,可以在下方留言,由于本人时间不充足所以不能保证及时回复,在此说声抱歉。
Spark源码下载
下载地址:源码下载地址;等我有时间上传之后再更新我自己的仓库地址。
CMake工程构建
源码下载过程省略,自行下载。下载完成之后,打开Cmake gui ,把cmakelists.txt 拖拽入cmakegui 中,如下图所示
32位程序编译
如果需要把生成目录修改成自定义的目录,则将目录地址填写到“where to build binaries:”后面的文本框即可(建议不要把生成目录设置成当前目录,以便后续直接删除生成目录,例如本人一般在默认的目录上填写/build)。点击configure, 如果第一次生成,则会弹出对应的配置工程框,如果编译的是32位比较简单,因为spark 就是目标为32位,也不是当前文章的需要重点介绍的。等待片刻,configure完成,点击“Generate” 生成,同样是生成完成即可。生成成功可以指点点击"Open Project"按钮,或者到刚才指定目录打开对应的VS .sln文件直接编译。32位我编译直接就编译成功了。
64位程序编译
相同于32位的配置,只是在点击"Configure"弹出点击配置选项,选择64位程序即可。其余的和32位的编译类似,不在赘述。
编译错误
32位编译基本上不会有问题,因为作者本身就是使用32位程序,主要解决64位编译的错误
错误1
error C2440: “specialization”: 无法从“overloaded-function”转换为“unsigned int (__cdecl SPK::Group:: * )(void) const”
错误位置:Core/SPK_Group.h(392)
错误原因:由于64位下,size_t 表示的类型是unsigned long long, 32位表示的类型位unsigned int,导致了在64位下spk_attribute 代表的类型和和实际类型不一致
修改方案之一:spk_attribute(unsigned int, capacity, reallocate, getCapacity); 中的“reallocate” 函数参数修改城unsigned int 和 “getCapacity” 函数返回值设置成unsigned int
错误2
这个错误比较明显,编译器给出提示“/bigobj ”
解决方案之一:在项目属性中->c+±>命令行 输入/bigobj 即可
错误3
put 函数为重载
原因和错误1 差不多,不在赘述
解决方案之一,添加一个put 函数如下:
void put(size_t i) { put32(reinterpret_cast<int32>(&i)); }
解决这个三个错误在我的机器上编译通过,如果还有其他问题碰到了,再进行补充。
ps:有大神说这个库有个设计问题,本人只是使用,并没有深究具体什么我也不清楚,如果图省事,可以直接使用大神在github上 的版本,大神修改的方案和我的方案有一些出入,具体看怎么方便怎么来吧!大神版本