精华内容
下载资源
问答
  • #include //STL 集合容器 #include //基于字符串的流 #include //STL 堆栈容器 #include //标准异常类 #include //底层输入/输出支持 #include //字符串类 #include //STL 通用模板类 #include //STL 动态数组容器 ...

    a5f2279809a0

    C语言

    C语音常用库

    #include //设定插入点

    #include //字符处理

    #include //定义错误码

    #include //浮点数处理

    #include //文件输入/输出

    #include //参数化输入/输出

    #include //数据流输入/输出

    #include //定义各种数据类型最值常量

    #include //定义本地化函数

    #include //定义数学函数

    #include //定义输入/输出函数

    #include //定义杂项函数及内存分配函数

    #include //字符串处理

    #\include //基于数组的输入/输出

    #i\nclude //定义关于时间的函数

    #include //宽字符处理及输入/输出

    #include //宽字符分类

    #include //复数类

    #include //基本输入/输出支持

    #include //输入/输出系统使用的前置声明

    #include

    #include //基本输入流

    #include //基本输出流

    #include //STL 队列容器

    #include //STL 集合容器

    #include //基于字符串的流

    #include //STL 堆栈容器

    #include //标准异常类

    #include //底层输入/输出支持

    #include //字符串类

    #include //STL 通用模板类

    #include //STL 动态数组容器

    #include 通用dos中断接口函数

    #include )驻留并退出函数

    常用函数

    展开全文
  • lua调用c库时,库函数可以放在系统目录或者指定绝对路径: 1,放系统下时先把库cp到系统目录 cp libmylib.so /usr/lib 调用方法如下(交互模式下,也可把lua语句写到一个文件再进行调用,亲,都一样的) #...
    一,从网上找的一个例子,代码如下:
    
    //***In mylib.c
    #include <math.h>
    #include "lua.h"
    #include "lualib.h"
    #include "lauxlib.h"

    static int l_sin (lua_State *L) 
    {
    double d = luaL_checknumber(L, 1);
    lua_pushnumber(L, sin(d));
    return 1; /* number of results */
    }

    static const struct luaL_reg mylib [] = {
    {"lsin", l_sin},
    {NULL, NULL} /* 必须以NULL结尾 */
    };

    int luaopen_mylib (lua_State *L) 
    {
    luaL_openlib(L, "mylib1", mylib, 0);
    return 1;
    }
    //end of mylib.c文件

    在文件当前目录执行以下命令:
    #gcc mylib.c -fPIC -shared -o libmylib.so
    将在当前目录下生成libmylib.so文件

    lua调用c库时,库函数可以放在系统目录或者指定绝对路径:
    1,放系统下时先把库cp到系统目录
    cp libmylib.so /usr/lib
    调用方法如下(交互模式下,也可把lua语句写到一个文件再进行调用,亲,都一样的)
    #lua
    > package.loadlib("libmylib.so", "luaopen_mylib")()
    > print(mylib1.lsin(10))
    -0.54402111088937

    2,指定绝对路径
    #lua
    > package.loadlib("/home/ym/test/lua/libmylib.so", "luaopen_mylib")()
    > print(mylib1.lsin(10))
    -0.54402111088937

    二,无聊的测试:
    把l_sin函数改为
    static int l_sin (lua_State *L) 
    {
    double d = luaL_checknumber(L, 1);
    lua_pushnumber(L, sin(d));
    return 2; /* 把这个值改为2 */
    }
    执行结果如下:
    #lua
    > package.loadlib("/home/ym/test/lua/libmylib.so", "luaopen_mylib")()
    > print(mylib1.lsin(10))
    10 -0.54402111088937

    把l_sin改为
    static int l_sin (lua_State *L) 
    {
    double d = luaL_checknumber(L, 1);
    lua_pushnumber(L, sin(d));
    return 3; /* 把这个值改为3 */
    }
    执行结果如下:
    #lua
    > package.loadlib("/home/ym/test/lua/libmylib.so", "luaopen_mylib")()
    > print(mylib1.lsin(10))
    function: 0xea848c 10 -0.54402111088937

     把l_sin改为
    static int l_sin (lua_State *L) 
    {
    double d = luaL_checknumber(L, 1);
    lua_pushnumber(L, sin(d));
    return 4; /* 把这个值改为4 */
    }
    执行结果如下:
    #lua
    > package.loadlib("/home/ym/test/lua/libmylib.so", "luaopen_mylib")()
    > print(mylib1.lsin(10))
    function: 0xea848c function: 0xea848c function: 0xea848c function: 0xea848c


     哎哟,出错了
     做如下调用:
    > print(mylib1.lsin(10,5))
    function: 0x19848c 105 -0.54402111088937

     可以看出,返回参数依次为lua_pushnumber压栈的参数、传入的参数值、函数地址
     但是返回的参数个数不能多于lua_pushnumber压栈的参数、传入的参数值、函数地址,否则人家不和你玩了。


     三,看一下lua代码吧,没多少,先看package.loadlib,他的原型:
      package.loadlib (libname, funcname)
      需要注意的是funcname必需遵循lua_CFunction,lua_CFunction的原型定义如下:
      typedef int (*lua_CFunction) (lua_State *L);
    在lua源码中找到这个函数:
    static int loadfunc (lua_State *L, const char *filename, const char *modname) {
    const char *funcname;
    const char *mark;
    modname = luaL_gsub(L, modname, ".", LUA_OFSEP);
    mark = strchr(modname, *LUA_IGMARK);
    if (mark) {
    int stat;
    funcname = lua_pushlstring(L, modname, mark - modname);
    funcname = lua_pushfstring(L, POF"%s", funcname);
    stat = ll_loadfunc(L, filename, funcname);
    if (stat != ERRFUNC) return stat;
    modname = mark + 1;  /* else go ahead and try old-style name */
    }
    funcname = lua_pushfstring(L, POF"%s", modname);
    return ll_loadfunc(L, filename, funcname);
    }
    我YY我们刚才调用的package.loadlib会调用loadfunc这个函数。

    C代码部分,先看一个lua接口luaL_openlib,其在源码中的定义如下:
    LUALIB_API void luaL_openlib (lua_State *L, const char *libname,
     const luaL_Reg *l, int nup) {
     luaL_checkversion(L);
     if (libname) {
     luaL_pushmodule(L, libname, libsize(l));  /* get/create library table */
     lua_insert(L, -(nup + 1));  /* move library table to below upvalues */
     }
     if (l)
     luaL_setfuncs(L, l, nup);
     else
     lua_pop(L, nup);  /* remove upvalues */
    }
    手册上说这个函数被luaL_register取代,luaL_register在源码中的定义:
    #define luaL_register(L,n,l) (luaL_openlib(L,(n),(l),0))
    换汤不换药,见手册说明:
    Opens a library. 
    When called with libname equal to NULL, it simply registers all functions in the list l (see luaL_Reg) into the table on the top of the stack. When called with a non-null libname, creates a new table t, sets it as the value of the global variable libname,sets it as the value of package.loaded[libname], and registers on it all functions in the list l. If there is a table in package.loaded[libname] or in variable libname, reuses this table instead of creating a new one
    疑问:按上面的说法,可以有下面的用法:
    luaL_openlib(L, NULL, mylib, 0);
    但是我改成这个方法生成.so后,lua调用会报错?
    luaL_Reg的定义如下:
    typedef struct luaL_Reg {
    const char *name;
    lua_CFunction func;
    } luaL_Reg;
    她记录注册C函数列表,可见要被lua函数调用,其函数原型必须符合lua_CFunction
    luaL_checknumber的定义如下:
    LUALIB_API lua_Number luaL_checknumber (lua_State *L, int narg) {
    int isnum;
    lua_Number d = lua_tonumberx(L, narg, &isnum);
    if (!isnum)
    tag_error(L, narg, LUA_TNUMBER);
    return d;
    }
    他返回第narg个参数
    lua_pushnumber见下:
    LUA_API void lua_pushnumber (lua_State *L, lua_Number n) {
    lua_lock(L);
    setnvalue(L->top, n);
    luai_checknum(L, L->top,
    luaG_runerror(L, "C API - attempt to push a signaling NaN"));
    api_incr_top(L);
    lua_unlock(L);
    }
    它把参数压栈返回。
    展开全文
  • 在很多情况下在使用LoadRunner进行性能测试的时候,仅仅凭借系统提供的函数可能无法完成测试任务,此时需要借助自行编写或者第三方提供的动态链接库提供的函数来完成测试任务。例如:一个进销存管理软件,为了提高...

    选自:《精通软件性能测试与LoadRunner实战》11月份出版

    在很多情况下在使用LoadRunner进行性能测试的时候,仅仅凭借系统提供的函数可能无法完成测试任务,此时需要借助自行编写或者第三方提供的动态链接库提供的函数来完成测试任务。例如:一个进销存管理软件,为了提高数据的安全性,系统采用第三方提供的动态连接库(DLL)文件对用户名和用户密码等关键数据进行了3DES加密,为了将明文的用户名和用户密码变为符合3DES密文字符串需要将用户名和密码进行加密,此时就必须在LoadRunner中调用动态链接库文件提供的函数来完成性能测试工作。
    在这里结合实例来举一个用Delphi 7编写的简单例子,编写了一个mul函数。函数原型如下:function mul(ainteger;binteger)integer;函数提供两个整数参数,如果第一个参数值大于或者等于100,则函数返回值为-1,否则将第一个参数值和第二个参数值的乘积作为函数的返回值,而后将源代码编译成myfunc.dll文件。
    library myfunc;
     
    uses
      SysUtils,
      Classes;
     
    {$R *.res}
     
    function mul(ainteger;binteger)integer;stdcall;
    begin
      if (a>=100) then  result=-1;
      result=a*b;
    end;
     
    exports
       mul;
    begin
    end.
    LoadRunner不仅可以调用自行编写或者第三方提供的动态连接库函数,而且可以调用系统提供的动态连接库函数。在下面的LoadRunner脚本文件中举了两个例子,一个是调用系统函数user32.dll中的MessageBoxA,另一个是调用刚才编写的myfunc.dll中的mul函数。
    相应脚本代码:
    #include "web_api.h"
     
    Action()
    {
        int x=10;
        int y=20;
        int z;
           //系统的函数库
           lr_load_dll("user32.dll");
        MessageBoxA(NULL, "测试消息主体!", "系统提示", 0);
           //我自己用delphi编写的函数库
           lr_load_dll("myfunc.dll");
        z=mul(x,y);
        lr_output_message("%d",z);
           return 0;
    }
     
    运行结果如下:
        首先,系统弹出一个提示框,而后在回放日志中将输出参数及其运行结果,详细信息请参见图317
     
    317:动态连接库脚本运行结果
    上面演示了一个动态连接库函数调用的例子,在实际测试活动中,大家需要针对不同项目的特点,灵活应用LoadRunner,提高测试效率和质量。
    【重要提示】
    1.        User.dll动态连接库存放于Windows系统System32目录下。
    2.        Myfunc.dll动态连接库可以存放于脚本存放目录下。
    3.        如果您想查看一个动态链接库文件中包含的函数,可以使用InspectExe软件,安装InspectExe以后,选择一个动态连接库文件,右键选择“属性”,请参见图318
    318user32.dll包含的函数列表




    本文转自 fish_yy 51CTO博客,原文链接:http://blog.51cto.com/tester2test/211609,如需转载请自行联系原作者

    展开全文
  • KeilC51库函数原型列表 1. 1. CTYPE.H bit isalnum(char c); bit isalpha(char c); bit iscntrl(char c); bit isdigit(char c); bit isgraph(char c); bit islower(char c); bit isprint(char c); ...

    • KeilC51库函数原型列表

    1. 1. CTYPE.H

    bit isalnum(char c)

    bit isalpha(char c)

    bit iscntrl(char c)

    bit isdigit(char c)

    bit isgraph(char c)

    bit islower(char c)

    bit isprint(char c)

    bit ispunct(char c)

    bit isspace(char c)

    bit isupper(char c)

    bit isxdigit(char c)

    bit toascii(char c)

    bit toint(char c)

    char tolower(char c)

    char __tolower(char c)

    char toupper(char c)

    char __toupper(char c)

    2. 2. INTRINS.H

    unsigned char _crol_(unsigned char c,unsigned char b)

    unsigned char _cror_(unsigned char c,unsigned char b)

    unsigned char _chkfloat_(float ual)

    unsigned int _irol_(unsigned int i,unsigned char b)

    unsigned int _iror_(unsigned int i,unsigned char b)

    unsigned long _irol_(unsigned long l,unsigned char b)

    unsigned long _iror_(unsigned long L,unsigned char b)

    void _nop_(void)

    bit _testbit_(bit b)

    3. 3. STDIO.H

    char getchar(void)

    char _getkey(void)

    char *gets(char * string,int len)

    int printf(const char * fmtstr[,argument]);

    char putchar(char c);

    int puts (const char * string);

    int scanf(const char * fmtstr.[,argument])

    int sprintf(char * buffer,const char *fmtstr[;argument])

    int sscanf(char *buffer,const char * fmtstr[,argument]);

    char ungetchar(char c);

    void vprintf (const char *fmtstr,char * argptr);

    void vsprintf(char *buffer,const char * fmtstr,char * argptr)

    4. 4. STDLIB.H

    float atof(void * string);

    int atoi(void * string);

    long atol(void * string);

    void * calloc(unsigned int num,unsigned int len);

    void free(void xdata *p)

    void init_mempool(void *data *p,unsigned int size);

    void *malloc (unsigned int size);

    int rand(void);

    void *realloc (void xdata *p,unsigned int size);

    void srand (int seed)

    5. 5. STRING.H

    void *memccpy (void *dest,void *src,char c,int len);

    void *memchr (void *buf,char c,int len);

    char memcmp(void *buf1,void *buf2,int len);

    void *memcopy (void *dest,void *SRC,int len);

    void *memmove (void *dest,void *src,int len);

    void *memset (void *buf,char c,int len);

    char *strcat (char *dest,char *src);

    char *strchr (const char *string,char c);

    char strcmp (char *string1,char *string2);

    char *strcpy (char *dest,char *src);

    int strcspn(char *src,char * set);

    int strlen (char *src);

    char *strncat (char 8dest,char *src,int len);

    char strncmp(char *string1,char *string2,int len);

    char strncpy (char *dest,char *src,int len);

    char *strpbrk (char *string,char *set);

    int strpos (const char *string,char c);

    char *strrchr (const char *string,char c);

    char *strrpbrk (char *string,char *set);

    int strrpos (const char *string,char c);

    int strspn(char *string,char *set)

    本征库函数(intrinsic routines)和非本征证库函数

    C51强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,多使用库函数使程序代码简单,结构清晰,易于调试和维护,下面介绍C51的库函数系统。

    C51提供的本征函数是指编译时直接将固定的代码插入当前行,而不是用ACALLLCALL语句来实现,这样就大大提供了函数访问的效率,而非本征函数则必须由ACALLLCALL调用。

    C51的本征库函数只有9个,数目虽少,但都非常有用,列如下:

    _crol_,_cror_:将char型变量循环向左()移动指定位数后返回

    _iror_,_irol_:将int型变量循环向左()移动指定位数后返回

    _lrol_,_lror_:将long型变量循环向左()移动指定位数后返回

    _nop_ 相当于插入NOP

    _testbit_ 相当于JBC bitvar测试该位变量并跳转同时清除。

    _chkfloat_ 测试并返回源点数状态。

    使用时,必须包含#inclucle <intrins.h>一行。

    如不说明,下面谈到的库函数均指非本征库函数。

    第二节 几类重要库函数

    1. 专用寄存器include文件

    例如80318051均为REG51.h其中包括了所有8051SFR及其位定义,一般系统都必须包括本文件。

    2. 绝对地址include文件absacc.h

    该文件中实际只定义了几个宏,以确定各存储空间的绝对地址。

    3. 动态内存分配函数,位于stdlib.h

    4. 缓冲区处理函数位于string.h

    其中包括拷贝比较移动等函数如:

    memccpy memchr memcmp memcpy memmove memset

    这样很方便地对缓冲区进行处理。

    5. 输入输出流函数,位于stdio.h

    流函数通8051的串口或用户定义的I/O口读写数据,缺省为8051串口,如要修改,比如改为LCD显示,可修改lib目录中的getkey.cputchar.c源文件,然后在库中替换它们即可。

    展开全文
  • 使用设备:macOS-10.15 jni调用c实践大体流程: 1、>javac HelloWorld.java,生成... } } HelloWorld的c语言实现: 文件列表: 参考: 1、Linux下gcc编译生成动态链接库*.so文件并调用它 2、Java通过JNI调用C语言库
  • C++常用库函数

    千次阅读 多人点赞 2015-12-21 10:48:15
    C++常用库函数大全。
  • 缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表. ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令. 执行如下: 方法二: 将生成的动态库文件...
  • 原博文2018-03-14 08:53 −math库: >>> import math >>> dir(math) ['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'ac...0661相关推荐2019-09-28 21:13 −Python ...是一种面向对象的动态...
  • matlab库函数大全

    万次阅读 多人点赞 2017-08-23 19:37:26
    附录 MATLAB函数参考 附录1 常用命令 附录1.1 管理用命令 函数名 功能描述 函数名 功能描述 addpath 增加一条搜索路径 rmpath ...列出.M文件
  • C++库函数

    2014-03-29 21:14:51
    #include <list> //STL 线性列表容器 #include <map> //STL 映射容器 #include #include <ios> //基本输入/输出支持 #include <iosfwd> //输入/输出系统使用的前置声明 #include #...
  • [库函数]动态库和静态库优缺点比较 转自:https://blog.csdn.net/u010649766/article/details/78528601 函数的必要性 我们在编写一个 C 语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新...
  • GCC使用库函数

    2020-02-05 11:57:03
    库函数包括:静态库和动态库 系统中可用的库都安装在“/usr/lib"和”/lib"目录下 共享库的后缀名由“.so"和版本号组成 如数学共享库的库名为“libm.so.5",这里的标识字符为m,版本号为5,”libm.a“则为静态数学库...
  • linux库函数

    千次阅读 2006-06-22 09:54:00
    Linux下创建库函数1. 介绍使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序...
  • C++库函数大全

    2017-09-03 12:05:00
    C++常用库函数 1、常用数学函数 头文件#include <math>或者#include <math.h> 函数原型 功能 返回值 int abs(int x) 求整数x的绝对值 绝对值 ...
  • 采用了动态连接的方式,所以C函数没有包含在可执行程序中,需要由另外的程序在运行时加载,ld不知道这个程序在哪里,所以我们还得手动指定 动态链接 #ld -dynamic-linker /lib/ld-linux.so.2 -lc -o ...
  • C++常见库函数

    千次阅读 2018-05-11 14:44:14
    C++常用库函数 1、常用数学函数 头文件 #include &lt;math&gt; 或者 #include &lt;math.h&gt; 函数原型功能返回值int abs(int x)求整数x的绝对值绝对值double acos(double x)计算arcos(x)的值...
  • Keil C51库函数

    2010-04-02 09:29:00
    第一节 本征库函数(intrinsic routines)和非本征证库函数 C51强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,多使用库函数使程序代码简单,结构清晰,易于调试和维护,下面介绍C51的库函数系统...
  • 第五章 库函数

    2018-04-28 09:26:18
    第五章 库函数 《C陷阱与缺陷》学习笔记posts 导读 C语言中没有定义输入/输出语句,任何一个有用的C程序都必须调用库函数来完成最基本的输入/输出操作。就像内存相关的的函数malloc和free是库函数,但是C++里的...
  • C 语言常用的库函数

    2020-05-29 00:03:57
    C 语言常用的库函数 库函数并不是 C 语言的一部分,它是由编译系统根据一般用户的需要编制并提供给用户使用的一组程序。每一种 C 编译系统都提供了一批库函数,不同的编译系统所提供的库函数的数目和函数名以及函数...
  • Keil C51库函数参考

    千次阅读 2012-11-28 10:11:54
    Keil C51库函数参考C51强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,多使用库函数使程序代码简单,结构清晰,易于调试和维护,下面介绍C51的库函数系统。第一节 本征库函数(intrinsic routines...
  • InstallShield内部库函数

    千次阅读 2015-11-02 09:53:50
    这个格式显示了正确的函数名,括号中显示了函数的参数列表。在函数的详细说明帮助中,每个参数用匈牙利标记法表示,指出每个参数位置上可被接受的数值类型。AskYesNo要求两个参数:第一个是字符类型,第二个是数值型...
  • InstallShield内部库函数全集

    千次阅读 2010-01-14 08:40:00
    库函数综述InstallShield包含300多个内部库函数,用户可在安装脚本中调用它们来创建程序组,操作文件夹,处理目录,监督安装状态,创建对话框,操作文件及其它更多工作。因为InstallShield脚本编译器已经识别这些...
  • 1.1.1 libpq目录下文件列表1.2 如何使用libpq 1. libpq是什么?     libpq是一套使用C语言编写的以供(C)程序员访问PostgreSQL后端服务器的库函数集合。通过使用libpq库函数,使客户端能够像psql程序命令一样...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,754
精华内容 7,901
关键字:

动态库函数列表