LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 739|回复: 6

求教SO动态库的传入传出参数与与调用问题?我试了总有问题、、、、

[复制链接]
发表于 2003-7-18 14:28:57 | 显示全部楼层 |阅读模式
求教SO动态库的传入传出参数与与调用问题?我试了总有问题、、、、
我的so文件如下my.c
#include <stdio.h>
#include <stdlib.h>
int test(int a)
{
  return a*a;
}
用如下编译连接成SO文件
gcc -shared -fpic -g -o libmy.so my.c
但是在程序中我应如何调用呢?多谢!
 楼主| 发表于 2003-7-18 16:10:07 | 显示全部楼层
还是有问题?
在main中可以调用了(因为是在main中打开动态库的);
但是在子函数中如何调用啊!
 楼主| 发表于 2003-7-18 16:16:50 | 显示全部楼层
调用SO动态库中函数的问题?
在main中可以调用了(因为是在main中打开动态库的);

但是在子函数中调用有问题,如何调用啊!

在make程序时报错
/tmp/cc2tWBhP.o: In function 'draw':
/tmp/cc2tWBhP.o.text+0x20a3):undefined reference to 'test'
 楼主| 发表于 2003-7-18 17:11:21 | 显示全部楼层
真是的,今天脑子有点木了,
把函数载入定义到main前面就可以了。。。。
发表于 2003-7-18 17:17:53 | 显示全部楼层
应该是在全局域声明一个函数指针。
发表于 2003-7-20 00:36:43 | 显示全部楼层
两种调用方法
一程是程序开始时就装入
这时与普通函数没有区别

另一种是使用dlopen方法
可以参考man
发表于 2003-7-21 22:41:19 | 显示全部楼层
mytest.cc
void test(int);
main()
{
  test(10)
}
gcc -o mytest mytest.o -lmy

You forget link the libmy.so (use -lmy) to link it.

Another way is to use dlopen() .. more interest world ;-)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表