Joe Johnson
Joe Johnson

Reputation: 23

LuaSocket socket/core.dll required location?

When I use

local socket = require("socket.core")

It works fine, the dll is located at "dir/socket/core.dll" but when I move the dll to say

"dir/folder/core.dll" and use

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

It returns that it was found however it could not find the specific module in folder.core.

How do I use Luasocket outside of it's socket.core requirements?

Thanks!

Upvotes: 2

Views: 3821

Answers (2)

Michal Kottman
Michal Kottman

Reputation: 16753

If you want to require("socket.core"), the shared library (dll) has to have an exported function called luaopen_socket_core (which the LuaSocket library has). Thus, it always needs to be called as require("socket.core").

If you want to move the DLL into some other folder, you have to modify package.cpath, which contains the file patterns which will be checked.

Let's say that you want to move the LuaSocket binary to folder. You have to place the binary in folder/socket/core.dll and modify package.cpath prior to calling require:

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

? represents the name passed to require translated to file paths: . -> /, i.e. socket.core -> socket/core.

Upvotes: 7

kikito
kikito

Reputation: 52658

I think you just need to remove the dot at the end.

local socket = require("folder.core")

Upvotes: 1

Related Questions