2

当我使用

local socket = require("socket.core")

它工作正常,dll位于“dir/socket/core.dll”但是当我移动dll时说

“dir/folder/core.dll”并使用

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

它返回它已找到,但在 folder.core 中找不到特定模块。

我如何在它的 socket.core 要求之外使用 Luasocket?

谢谢!

4

2 回答 2

6

如果你愿意require("socket.core"),共享库 (dll) 必须有一个名为 luaopen_socket_core 的导出函数(LuaSocket 库有)。因此,它总是需要被称为require("socket.core")

如果要将 DLL 移动到其他文件夹,则必须修改package.cpath,其中包含将要检查的文件模式。

假设您要将 LuaSocket 二进制文件移动到folder. 您必须在调用之前将二进制文件放入folder/socket/core.dll并修改:package.cpathrequire

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

?表示传递给require转换为文件路径的名称:. -> /,即socket.core -> socket/core.

于 2011-06-05T17:13:36.573 回答
0

我认为你只需要在最后删除点。

local socket = require("folder.core")
于 2011-06-05T17:11:14.763 回答