Я скомпилировал расширение lua ac lua в lua5.1 на windows, и оно хорошо работает в режиме командной строки lua, но не может использовать его в openresty - PullRequest
0 голосов
/ 09 ноября 2019

Существует код ac, называемый lua-pack.c, при условии здесь , который является расширением lua для шестнадцатеричной строки процесса, мне нужно использовать его в openresty для обработки некоторого сетевого потока.

Я устанавливаю его в Windows с lua5.1 и luarocks

Я успешно получаю lua-pack.dll. Все тесты были успешно выполнены в режиме командной строки, например:

lua C: \ projects \ lua-pack \ lua-pack \ test.lua

Но однажды я поставилэтот lua-pack.dll в директории openresty, и используйте его, какое-то исключение выдаст как

worker process 24892 exited with code C0000005

Я могу успешно скомпилировать lua-pack.so (compile by makefile) в ubuntu, и он работает прямо в openrestyв LinuxЯ попытался скопировать этот lua-pack.so в Windows, и он выдает исключение, говорящее, что это не для использования в Windows.

Однако я заметил, что в test.lua здесь автору он требует (pack) вместо require (lua_pack)

Поэтому я переименовал lua-pack.dll в pack.dll, затем я получил еще одно исключение

lua entry thread aborted: runtime error: error loading module 'pack' from file '.\pack.dll':

Я замечаючто это pack.lua в окнах lua-rocks, я не знаю, имеет ли это значение.

test.lua, предоставленный автором, запускается так, его можно запустить в командной строке Windows

require"pack"
bpack=string.pack
bunpack=string.unpack

Мой код работает в Linux openresty, запустите вот так

local bpack, bunpack
do
    local string_pack = string.pack
    local string_unpack = string.unpack
    require "lua_pack"
    bpack = string.pack
    bunpack = string.unpack
    -- luacheck: globals string.unpack
    string.unpack = string_unpack
    -- luacheck: globals string.pack
    string.pack = string_pack
end
...