linux编译ntohl加什么库,lua 在linux中使用so库,在lua5.1没测试正常

#include

#include

#include

#include

#include

#include

#include

#include "lua.h"

#include "lualib.h"

#include "lauxlib.h"

//gcc libsocket.c -fPIC -shared -o

libmylib51.so -lm -I/home/tomas/lua5.1/src

--[[

root@Tomas:/home/tomas/MyLua#

./lua5.1 test.lua

./lua5.1: test.lua:3: module 'mylib' not found:

no field package.preload['mylib']

no file './mylib.lua'

no file

'/usr/local/share/lua/5.1/mylib.lua'

no file

'/usr/local/share/lua/5.1/mylib/init.lua'

no file '/usr/local/lib/lua/5.1/mylib.lua'

no file

'/usr/local/lib/lua/5.1/mylib/init.lua'

no file './mylib.so'

no file '/usr/local/lib/lua/5.1/mylib.so'

no file '/usr/local/lib/lua/5.1/loadall.so'

no file './libmylib51.so'

no file

'/usr/local/lib/lua/5.1/libmylib51.so'

stack traceback:

[C]: in function 'require'

test.lua:3: in main chunk

输出的lua动态库的文件名要是libmylib51.so

--socket = require("bit")

--a = require("socket")

b = require("mylib")

print(mylib.lsin(1))

print(b.lsin(1))

--]]

int luaopen_mylib(lua_State *L);

static int l_sin (lua_State *L)

{

double d = luaL_checknumber(L, 1);

lua_pushnumber(L, sin(d));

//printf("ok now is luahook!\n");

return 1;

}

static const luaL_Reg mylib[] =

{

{"lsin", l_sin},

{NULL, NULL}

};

int luaopen_mylib(lua_State *L)

{

luaI_openlib(L, "mylib", mylib, 0);

printf("hello,load!\n");

return 1;

}

unsigned int getLoalIpAddress(const char* ethname)

{

struct ifreq ifr ={0};

int fd = socket(AF_INET,SOCK_DGRAM,0);

if( fd < 0 )

{

return -1;

}

strcpy(ifr.ifr_name,ethname);

if( ioctl(fd,SIOCGIFADDR,&ifr) < 0 )

{

return

-1;

}

struct sockaddr_in localSockAddr;

memcpy(&localSockAddr, &ifr.ifr_addr,

sizeof(struct sockaddr_in));

unsigned int ip =

ntohl(localSockAddr.sin_addr.s_addr);

struct in_addr ipaddr;

ipaddr.s_addr = htonl(ip);

printf("%s->%s\n",ethname,inet_ntoa(ipaddr));

close(fd);

return

ip;

}

int main()

{

getLoalIpAddress("eth0"); }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值