Существует код 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