Reputation: 23
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
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
Reputation: 52658
I think you just need to remove the dot at the end.
local socket = require("folder.core")
Upvotes: 1