上一篇文章是18年的OpenKE版本。最近时不时收到网友私信,说dll用不了或者编译步骤已经对不上。特意下载了最新的OpenKE--PyTorch版本试了一下,以下是更新后的步骤(与旧的略有差别):
1. 下载配置pthread for windows。pthreads-w32-2-9-1-release貌似已经不能下载。我下了pthreads4w-code-v3.0.0用visual studio编译了一下。编译方法很简单,但要注意选对32、64环境(根据你最后要运行openKE的python版本),建议直接两套都编译一下。手把手教学如下:
- 运行上图所示x86或x64命令行(根据需求)
- cd到pthread代码目录
- 运行nmake clean VC EXTRAVERSION="-w64"。最后那个EXTRAVERSION只是个标记,为了好区别编译出来的文件,tag可以随便改
- 运行完毕在目录下会生成如下文件
- 将dll复制到系统路径下,32位的放到syswow64,64位的放到system32,不能搞反。此处例子是放到system32下。
- 将lib复制到VC的lib路径下。默认路径可以在visual studio的项目属性中找到
- 拷贝以下3个头文件到VC的include路径下,至此pthread配置完毕。
2. 在openKE的base文件夹下,新建visual studio的dll类型C++项目。修改几个文件,主要有以下几个地方:
- 所有导出函数(不只是base.cpp,还有其它.h文件)都需要把extern "C"修改为extern "C" __declspec(dllexport)
- setting.h中 #define INT long 修改为 typedef int INT; (最后有分号)。类似地修改 #define REAL float 为 typedef double REAL;
- corrupt.h和test.h中添加一句 #include "iso646.h"
- base.cpp的getBatch函数最后,添加一行return ((void*)0);
3. 在configuration manager中配置debug/release, 32bit/64bit为自己想要的。然后在项目属性中,按需修改vc++ directory (include、library路径);linker/input/Additional dependencies中添加pthreadVC3-w64.lib,名字因命令行中tag设置而异
4. 编译即可得到base.dll,新建OpenKE/release文件夹,将dll拷贝到下面
5. 修改openKE中所有出现base.so的地方为base.dll,就可以运行啦