企业信息

    上海渤伦机电设备有限公司

  • 13
  • 公司认证: 营业执照已认证
  • 企业性质:外资企业
    成立时间:
  • 公司地址: 上海市 松江区 上海市松江区松乐路128号月厦新天地1021室
  • 姓名: 吴先生
  • 认证: 手机已认证 身份证未认证 微信已绑定

    6ED1056-1DA00-0BA0 西门子LOGO! 存储卡 一级代理商

  • 所属行业:电气 低压电器 控制器
  • 发布日期:2021-04-12
  • 阅读量:48
  • 价格:1.00 元/个 起
  • 产品规格:不限
  • 产品数量:1000.00 个
  • 包装说明:不限
  • 发货地址:上海松江  
  • 关键词:西门子LOGO!存储卡,6ED1056-1DA00-0BA0

    6ED1056-1DA00-0BA0 西门子LOGO! 存储卡 一级代理商详细内容

    6ED1056-1DA00-0BA0 西门子LOGO! 存储卡 一级代理商 6ED1056-1DA00-0BA0 西门子LOGO! 存储卡 一级代理商


    产品参数:LOGO! 存储卡 重复和/或 技术窍门保护 LOGO! 开关程序 从 ..0BA4 起


    用C语言扩展lua模块(入门)


     

    lua中常常加载一些模块来实现某些功能。如果没有现成的模块以供require,那么我们只好自己写模块了。

    前几天用C给lua扩展了sha1算法模块。提炼出来做个笔记。

    lua示例代码如下:

    require "libencode" local str = "source str" local des = libencode.sha1(str) print(des)

    我需要用libencode模块中的sha1()函数求出des。很简单,require该模块,然后直接调用。那么,这个库怎么来的呢?

    分为三步:首先用C写模块(遵循规则),再把源码编译成动态库,后把动态库拷贝到相应目录下(必须是lua识别的目录)

    先贴出代码:

    #include <lua.h> #include <lauxlib.h> #include <lualib.h> static void encode_sha(const char* src, char* des)
    { /* *sha-hash  //hash算法 */ } static int l_sha1(lua_State* lua)
    { const char *src = NULL; char des[40] = {0};
        src = luaL_checkstring(lua, 1); //出栈获取源字符串 encode_sha(src, des); //something lua_pushstring(lua, des); //压栈返回给lua return 1; //告诉lua返回了一个变量 } //映射表,"sha1"为lua中的函数名,l_sha1为真正C中的函数地址 static const struct luaL_Reg encode[] = {
        {"sha1", l_sha1},
        {NULL, NULL},
    }; //模块注册函数 int luaopen_libencode(lua_State* lua)
    { //注册本模块中所有的功能函数,libencode为模块名,encode数组存储所有函数的映射关系 luaL_register(lua, "libencode", encode); return 1;
    }

    encode[]数组中存储lua中各个函数名和函数实际地址。

    luaopen_xxx()函数负责注册模块。例如这里当lua执行require "libencode"指令时便会搜寻luaopen_libencode()函数注册模块。

    luaL_register()函数用给定名称创建一个table。并用数组内容填充table。也就是说这个函数把模块里所有的API函数注册到这个模块名下,这样就可以以(module.fun)这种格式在lua中访问C函数了。

    编译:

    gcc source.c -fPIC -shared -o source.so(如果lua时调用出错,根据情况加其他编译参数)

    拷贝:

    mv  .../source.so    LUA_C_PATH(这里要拷贝到lua的c模块路径,命令行下执行print("C path:", package.cpath)获得路径


    http://fd123321.cn.b2b168.com
    欢迎来到上海渤伦机电设备有限公司网站, 具体地址是上海市松江区上海市松江区松乐路128号月厦新天地1021室,联系人是吴先生。 主要经营机电设备、工程机械 设备及配件、电气设备及配件、电线电缆、自动化成套配电装置及设备、低压电器元件、工业自动化控制设备批发零售。 单位注册资金单位注册资金人民币 100 万元以下。 价格战,是很多行业都有过的恶性竞争,不少厂家为了在价格战役中获胜,不惜以牺牲产品质量为代价,而我们公司坚决杜绝价格战,坚持用优质的原材料及先进的技术确保产品质量,确保消费者的合法利益。