Chinaunix

标题: 如何让C调用C++生成的动态库 @ LINUX [打印本页]

作者: chenhao_no1    时间: 2004-02-13 11:58
标题: 如何让C调用C++生成的动态库 @ LINUX
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.
作者: iesc    时间: 2004-02-13 12:14
标题: 如何让C调用C++生成的动态库 @ LINUX
a.h

#ifdef __cplusplus
extern "C" {
#endif

int my_main(void);

#ifdef __cplusplus
}
#endif
作者: apollolegend    时间: 2004-02-13 16:54
标题: 如何让C调用C++生成的动态库 @ LINUX
可以向下兼容么?
作者: lenovo    时间: 2004-02-13 17:00
标题: 如何让C调用C++生成的动态库 @ LINUX
我以为是不行的。c要是可以调用c++代码生成的动态库,
那还要c++干什么。
作者: 罗格纳    时间: 2004-02-14 13:25
标题: 如何让C调用C++生成的动态库 @ LINUX
要对C++部分,显式声明,用extern "C"
作者: chenhao_no1    时间: 2004-02-14 16:35
标题: 如何让C调用C++生成的动态库 @ LINUX
thanks




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2