sag*_*asw 4 sockets lua luasocket
我想实现像在我的 Lua 构建中嵌入套接字功能一样的功能。所以我不需要再复制socket.core.dll(只是为了好玩)。
我搜索邮件列表,看到一些人讨论这个主题, http://lua-users.org/lists/lua-l/2005-10/msg00269.html
但我对详细步骤有疑问,谁可以给我更改 lua 和 luasocket 代码以使它们协同工作(而不是使用 dll 方法)的详细步骤。
我在 Windows XP 和 VC2008 中尝试了以下步骤:
1)将luasocket代码复制到Lua项目中。
2)添加一些代码
static const luaL_Reg lualibs[] = {
{"", luaopen_base},
{LUA_LOADLIBNAME, luaopen_package},
{LUA_TABLIBNAME, luaopen_table},
{LUA_IOLIBNAME, luaopen_io},
{LUA_OSLIBNAME, luaopen_os},
{LUA_STRLIBNAME, luaopen_string},
{LUA_MATHLIBNAME, luaopen_math},
{LUA_DBLIBNAME, luaopen_debug},
{LUA_SOCKETLIBNAME, luaopen_socket_core}, // add this line
{LUA_MIMELIBNAME, luaopen_socket_core}, // add this line
{NULL, NULL}
};
Run Code Online (Sandbox Code Playgroud)
3)构建项目,并运行它。
当我输入时print(socket._VERSION),它显示luasocket 2.0.2,它是正确的。
当我输入时print(socket.dns.toip("localhost")),它显示127.0.0.1 table: 00480AD0,它也是正确的。
但是当我尝试使用其他功能(例如绑定)时,它无法工作。
谁能告诉我原因?
您需要将 luasocket 内容放入 package.preload 表中,如下所示:
lua_getfield(L, LUA_GLOBALSINDEX, "package");
lua_getfield(L, -1, "preload");
lua_pushcfunction(L, luaopen_socket_core);
lua_setfield(L, -2, "socket.core");
// add mime.core yourself...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2755 次 |
| 最近记录: |