请大家帮我看个程序

橡皮擦 2012-03-07 07:36:09
#include <dlfcn.h>
#include <stdio.h>
#include <stdlib.h>

typedef double (*pfunc)(double);
int main(void)
{
void *handle;
pfunc func;

handle = dlopen("libm.so", RTLD_NOW);
func = dlsym(handle, "sqrt");
if (handle == NULL || func == NULL) {
printf("Open so failed: %s.\n", dlerror());
exit(EXIT_FAILURE);
}

printf("add = %f\n", func(2));
dlclose(handle);
return 0;
}
...全文
92 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2012-03-07
  • 打赏
  • 举报
回复

#include <dlfcn.h>
#include <stdio.h>
#include <stdlib.h>

typedef double (*pfunc)(double); // 定义一个函数指针数据类型pfunc,这种数据类型
// 用来指向参数是double,返回值也是double的函数
int main(void)
{
void *handle; // 定义一个指针
pfunc func; // 定义一个函数指针func

handle = dlopen("libm.so", RTLD_NOW); // 装载动态库libm.so
func = dlsym(handle, "sqrt"); // 从动态库中获取函数sqrt的函数指针
if (handle == NULL || func == NULL) // 如果获取失败
{
printf("Open so failed: %s.\n", dlerror());
exit(EXIT_FAILURE);
}

printf("add = %f\n", func(2)); // 计算2的平方根
dlclose(handle); // 关闭动态库
return 0;
}
qiuhui00 2012-03-07
  • 打赏
  • 举报
回复
就像3楼说的那样
ningto.com 2012-03-07
  • 打赏
  • 举报
回复
取出动态库中的sqrt函数,然后使用这个函数对2进行计算
橡皮擦 2012-03-07
  • 打赏
  • 举报
回复
分析一下这个程序
羽飞 2012-03-07
  • 打赏
  • 举报
回复
什么问题?

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧