免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3543 | 回复: 6
打印 上一主题 下一主题

[C] 请教一个不同源文件中函数调用的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-29 14:54 |只看该作者 |倒序浏览
本帖最后由 WHITLACK 于 2010-03-29 15:01 编辑

现在在file_a.c中有定义 int func_AAA()函数
且在file_b.h中有声明 extern int func_AAA();

file_a.c编译生成可执行文件 A


现在我在file_c.c 中想使用刚才定义的函数 func_AAA(),
请问应该如何做?
我已经在file_c.c中 include "file_b.h"
单独编译file_c.c 现在是可以通过的

但是我的file_c.c 是和其他一些文件一起编译生成一个动态库libDDD.so的

在链接的阶段会提示func_AAA函数没有定义,请问我应该如何做?谢谢

论坛徽章:
0
2 [报告]
发表于 2010-03-29 15:01 |只看该作者
gcc file_a.c file_c.c 不能通过?

论坛徽章:
0
3 [报告]
发表于 2010-03-29 15:04 |只看该作者
gcc file_a.c file_c.c 不能通过?
scaleray 发表于 2010-03-29 15:01



   不好意思,刚才没有说明白,单独编译file_c.c是可以的
但是编译生成一个动态库的时候链接会出错

论坛徽章:
0
4 [报告]
发表于 2010-03-29 15:10 |只看该作者
本帖最后由 scaleray 于 2010-03-29 15:13 编辑

回复 3# WHITLACK


    生成动态链接库:gcc  -shared -o libmyso.so file_a.c
    链接:gcc -o test file_c.c ./libmyso.so


试试

论坛徽章:
0
5 [报告]
发表于 2010-03-29 15:23 |只看该作者
回复 4# scaleray


    gcc  -shared -o libmyso.so file_a.c

谢谢,这样确实是OK了
不过一定要这样吗?
好像不太好看啊

论坛徽章:
0
6 [报告]
发表于 2010-03-29 15:25 |只看该作者
不好看?
哪里不好看俄
编译成动态链接库只能这样

论坛徽章:
0
7 [报告]
发表于 2010-03-29 15:37 |只看该作者
本帖最后由 WHITLACK 于 2010-03-29 15:38 编辑
不好看?
哪里不好看俄
编译成动态链接库只能这样
scaleray 发表于 2010-03-29 15:25



又发现个问题啊,
如果这样的话,我提供给别人的动态库,
别人在使用的使用岂不是还要和我的file_a.c一起编译?

比如 另外一个文件 File_D.c
如果需要用到我的动态库libmy.so

那别人在编译的时候必须要这样?
gcc -o test File_D.c ./libmyso.so
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP