疑问:是否可以加载第三方dll文件(从lua中調用dll中的函数)?
尝试在windows(windows10)平台下,将dll(rime.dll使用适合lua5.3的版本,该dll也与lua5.3兼容—— 在ZeroBrane Studio中調試正常.)放入同一文件夹(用户文件夹\rime\lua)下.
从lua中加载(尝试require和package.cpath.)失败!
是不支持吗? 还是被去除了调用dll的功能?
查看rime.dll 的lua 版本 5.3 5.4 dll 不能共用 把下面funtion 放入 lua_translator 產生 candidate
local function Version()
local ver
if LevelDb then
ver = 177
elseif Opencc then
ver = 147
elseif KeySequence and KeySequence().repr then
ver= 139
elseif ConfigMap and ConfigMap().keys then
ver= 127
elseif Projection then
ver= 102
elseif KeyEvent then
ver = 100
elseif Memory then
ver = 80
else
ver= 79
end
return ver
end
function Ver_info()
return string.format("Ver: librime %s librime-lua %s lua %s",
rime_api.get_rime_version() , Version() ,_VERSION )
end
谢谢,之前使用的是windows版0.14.3版本(支持的lua版本似乎是5.3)。 经过尝试在lua_translator相关脚本中添加上述函数(也在lua_filter相关脚本中尝试。)。candidate均是空白。 于是卸载小狼毫,并重新安装(在官网https://rime.im/download/下载windows版0.14.3。),但candidate依然是空白。
建議你 將 librime-lua fork 出來 修改 https://github.com/hchunhui/librime-lua/blob/43877c6da70a772d90517fc816674badcedf930d/CMakeLists.txt#L18 下 幾行 5.4 -->5.3 利用ci 直接編譯出 rime.dll 將它替換 program.......\rime\rime.dll
是可以的,只是需要自己编译一下第三方 dll。
librime release 中编译出来的 rime.dll 已经导出了 lua 的符号。编译 dll 的时候,首先需要自行下载 rime-with-plugins-1.5.3-win32.zip 解压,并准备 lua 5.3 header 文件。然后调整编译参数,使之链接到 rime.dll。如果用 librime 1.7.3,则对应 lua 5.4 header。
如果是用 mingw 编译的话,可以参考 https://github.com/hchunhui/librime-cloud/blob/master/Makefile 。这里面是用 mingw,通过调整 LUAINC 和 LUALIB 编译了一份适用于 rime 的 luasocket。用 MSVC 的话应该是类似的。
好的。正在尝试(因为不会编程——也不了解c++,还在慢慢查找如何编译的资料中。)。