免费注册 查看新帖 |

Chinaunix

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

sco unix下编写动态库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-06-28 13:54 |只看该作者 |倒序浏览
我写了一个简单的c函数,想做成动态库,可是,如果用cc/gcc编译,在c++程序中不能调用,提示找不到该函数;但是,用CC/g++编译该动态库,则可以调用。
请大虾帮帮忙。谢谢。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2004-06-28 14:11 |只看该作者

sco unix下编写动态库

extern "C"

论坛徽章:
0
3 [报告]
发表于 2004-06-28 15:27 |只看该作者

sco unix下编写动态库

testlib.c代码:
#include <stdio.h>;
void prntHello(){
printf("Hello world!";
}

testlib.h代码:
void prntHello();

dlltest.cpp代码:
#include "testlib.h"
main ()
{
  prntHello ();

}

1. 产生动态库:
gcc -c testlib.c
ar -q libhello.a testlib.o
2. 调用动态库:
g++ -o aa dlltest.cpp -lhello
错误信息如下:
Undefined                       first referenced
symbol                             in file
prntHello(void)                     /usr/tmp/cc4Wztqg.o
aa: fatal error: Symbol referencing errors. No output written to aa
collect2: ld returned 1 exit status
如果将第一步中的gcc换为g++,则没有问题。

论坛徽章:
0
4 [报告]
发表于 2004-06-29 07:44 |只看该作者

sco unix下编写动态库

1。你这叫动态库吗?
2。你照flw 老大话去做了吗,用extern "C" {} 来包含你的函数定义。

论坛徽章:
0
5 [报告]
发表于 2004-06-29 13:49 |只看该作者

sco unix下编写动态库

1. 编译成动态库和静态库会出现同样的错误。
2.上面只是我测试用的例子,实际上我需要使用别人用cc编译的动态库/静态库,我没有动态库/静态库的源代码,因此,不可能使用extern "C".

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-06-29 14:32 |只看该作者

sco unix下编写动态库

头文件总有吧?
把头文件用extern "C"括起来。

论坛徽章:
0
7 [报告]
发表于 2004-06-29 17:28 |只看该作者

sco unix下编写动态库

试过了,不起作用。

论坛徽章:
0
8 [报告]
发表于 2004-06-29 17:39 |只看该作者

sco unix下编写动态库

extern "C"
{
#include "testlib.h"
}

main ()
{
prntHello ();

}

g++ -o aa dlltest.cpp libhello.a

论坛徽章:
0
9 [报告]
发表于 2004-06-30 14:43 |只看该作者

sco unix下编写动态库

可以编译过去了,非常感谢。
不过有一点不太明白:为什么用g++ -o aa dlltest.cpp libhello.a可以编译,而用g++ -o aa libhello.a dlltest.cpp 就不能编译了?

论坛徽章:
0
10 [报告]
发表于 2004-07-01 09:26 |只看该作者

sco unix下编写动态库

看看编译原理吧!
源文件是有顺序的,要不然其中调用到的函数就会找不到了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP