librime-lua icon indicating copy to clipboard operation
librime-lua copied to clipboard

疑问:是否可以加载第三方dll文件(从lua中調用dll中的函数)?

Open ruhchjdbdbhccjjc opened this issue 3 years ago • 5 comments

 尝试在windows(windows10)平台下,将dll(rime.dll使用适合lua5.3的版本,该dll也与lua5.3兼容—— 在ZeroBrane Studio中調試正常.)放入同一文件夹(用户文件夹\rime\lua)下.
 从lua中加载(尝试require和package.cpath.)失败!
 是不支持吗?  还是被去除了调用dll的功能?

ruhchjdbdbhccjjc avatar Aug 09 '22 13:08 ruhchjdbdbhccjjc

查看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

shewer avatar Aug 10 '22 01:08 shewer

谢谢,之前使用的是windows版0.14.3版本(支持的lua版本似乎是5.3)。 经过尝试在lua_translator相关脚本中添加上述函数(也在lua_filter相关脚本中尝试。)。candidate均是空白。 于是卸载小狼毫,并重新安装(在官网https://rime.im/download/下载windows版0.14.3。),但candidate依然是空白。

ruhchjdbdbhccjjc avatar Aug 11 '22 06:08 ruhchjdbdbhccjjc

建議你 將 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

shewer avatar Aug 11 '22 09:08 shewer

是可以的,只是需要自己编译一下第三方 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,通过调整 LUAINCLUALIB 编译了一份适用于 rime 的 luasocket。用 MSVC 的话应该是类似的。

hchunhui avatar Aug 13 '22 03:08 hchunhui

好的。正在尝试(因为不会编程——也不了解c++,还在慢慢查找如何编译的资料中。)。

ruhchjdbdbhccjjc avatar Aug 13 '22 11:08 ruhchjdbdbhccjjc