免费注册 查看新帖 |

Chinaunix

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

[C++] 如何让C调用C++生成的动态库 @ LINUX [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-02-13 11:58 |只看该作者 |倒序浏览
1. I used RH9.0 Linux

2. I have these files: a.cxx b.c a.h

3. a.xx :
   
  int my_main( void) {}

  a.h

  int my_main(void);

  b.c

  #include "a.h"

  int main( void)
  {
      my_main();
      return 0;
  }

4. I compile it as below

  g++ -c -g a.cxx
  ld -shared -o libAA.so a.o
  gcc -I. -c -g b.c

  ld a.o b.o,  it complain that :
ld: warning: cannot find entry symbol _start; defaulting to 08048074
a.o(.text+0xf): In function `my_main()':
/tmp/a.cxx:8: undefined reference to `printf'
b.o(.text+0x11): In function `main':
/tmp/b.c:6: undefined reference to `my_main'

5. why ? thank you.

论坛徽章:
0
2 [报告]
发表于 2004-02-13 12:14 |只看该作者

如何让C调用C++生成的动态库 @ LINUX

a.h

#ifdef __cplusplus
extern "C" {
#endif

int my_main(void);

#ifdef __cplusplus
}
#endif

论坛徽章:
0
3 [报告]
发表于 2004-02-13 16:54 |只看该作者

如何让C调用C++生成的动态库 @ LINUX

可以向下兼容么?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-02-13 17:00 |只看该作者

如何让C调用C++生成的动态库 @ LINUX

我以为是不行的。c要是可以调用c++代码生成的动态库,
那还要c++干什么。

论坛徽章:
0
5 [报告]
发表于 2004-02-14 13:25 |只看该作者

如何让C调用C++生成的动态库 @ LINUX

要对C++部分,显式声明,用extern "C"

论坛徽章:
0
6 [报告]
发表于 2004-02-14 16:35 |只看该作者

如何让C调用C++生成的动态库 @ LINUX

thanks
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP