OpenKE在windows环境下的安装

OpenKE是清华NLP刘知远教授团队的一个知识表示学习(knowledge graph embedding)的开源框架。官方版本仅提供linux环境下的包。但由于公司电脑限制,不得不考虑在windows下跑。git上有一个issue问了如何在windows下运行,虽然没有提供具体步骤,但也提供了基本思路 - 重新编译base的c++库。

一开始偷懒不想装visual studio,先后尝试了mingw和cygwin均未成功。编译能过,但是都卡在了config.py中ctypes.cdll.LoadLibrary()这句话,原因应该是32/64没匹配上。非常奇怪,cygwin我是64位,但并不好使,无法正确加载动态库。最终还是用vs重新编译成dll,就可以运行了。以下是适用于vs的步骤。

1. 下载pthread for windows。我下的是pthreads-w32-2-9-1-release,省了自己编译,而且里面已经包含了32、64两套文件。解压后将pre-build.2/include和/lib下的文件可以选择拷贝到vc include默认路径下,也可以选择之后修改项目属性增加搜索路径。/dll下的文件需要拷贝到系统文件夹system32或syswow64下,32位的放到syswow64,64位的放到system32,不能搞反。

2. 修改base等相关文件。主要有以下几个地方:

  • base.cpp在 #include <pthread.h> 之前添加一行 #define HAVE_STRUCT_TIMESPEC。这行也可以直接在pthread.h中添加,效果一样。

  • 所有导出函数(不只是base.cpp,还有其它.h文件)都需要把extern "C"修改为extern "C" __declspec(dllexport)

  • setting.h中 #define INT long 修改为 typedef int INT; 

3. 在vs中新建c++ dll项目,所有文件导入。先在configuration manager中配置debug/release, 32bit/64bit为自己想要的。然后在项目属性中,按需修改vc++ directory (include、library路径);linker/input/Additional dependencies中添加pthreadVC2.lib;c\c++/Preprocessor,末行添加_CRT_SECURE_NO_WARNINGS

4. 编译即可得到base.dll,拷贝到OpenKE/release下。打开OpenKE/config/Config.py,把base.so改成base.dll就可以运行了。

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值