您的位置:首页 > 运维架构 > Linux

Linux动态加载库的使用方法

2015-11-09 21:58 465 查看
// string.c
#define ENDSTRING   '\0'

int StrLen(char *string)
{
int len = 0;

while (*string++ != ENDSTRING)
{
len++;
}

return len;
}

// main.c
#include <stdio.h>
#include <dlfcn.h>

int main(int argc, char *argv[])
{
char src[] = "Hello Dymatic";

int (*pStrLenFun)(char *str);
void *phandle = NULL;
char *perr = NULL;
phandle = dlopen("./libstr.so", RTLD_LAZY);

if (!phandle)
{
printf("Failed Load library!\n");
}
perr = dlerror();
if (perr != NULL)
{
printf("%s\n", perr);

return 0;
}

pStrLenFun = dlsym(phandle, "StrLen");
perr = dlerror();
if (perr != NULL)
{
printf("%s\n", perr);

return 0;
}

printf("the string length is: %d\n", pStrLenFun(src));
dlclose(phandle);

return 0;
}

编译生成 libstr.so:gcc -shared string.c -o libstr.so
编译 main.c 生成 test:gcc -o test main.c -ldl				// 需要动态链接库 libdl.so
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: