LuaSocket socket / core.dll требуется расположение? - PullRequest
2 голосов
/ 05 июня 2011

Когда я использую

local socket = require("socket.core")

Он работает нормально, DLL находится в "dir / socket / core.dll", но когда я перемещаю DLL, чтобы сказать

"dir /folder / core.dll "и использовать

local socket = require("folder.core.")

Возвращает, что он был найден, но не может найти конкретный модуль в folder.core.

Как использовать Luasocket вне егоТребования к socket.core?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 05 июня 2011

Если вы хотите require("socket.core"), общая библиотека (dll) должна иметь экспортированную функцию luaopen_socket_core (которая есть в библиотеке LuaSocket). Таким образом, его всегда нужно называть require("socket.core").

Если вы хотите переместить DLL в другую папку, вам нужно изменить package.cpath, которая содержит шаблоны файлов, которые будут проверяться.

Допустим, вы хотите переместить двоичный файл LuaSocket в folder. Вы должны поместить двоичный файл в folder/socket/core.dll и изменить package.cpath до вызова require:

package.cpath = package.cpath .. ';folder/?.dll'
local socket = require('socket.core')

? представляет имя, переданное require, переведенное в пути к файлам: . -> /, т.е. socket.core -> socket/core.

0 голосов
/ 05 июня 2011

Я думаю, вам просто нужно удалить точку в конце.

local socket = require("folder.core")
...