关于linux c程序调用c++库的问题!
首先声明:
1. 是linux下的编程。
2. 涉及到c和c++的开发。
3. 这里的库是动态库或者是静态库。
问题:
已有一个通过automake(里面用到libtool等工具生成Makefile)生成的工程,并且运行良好。
现在需要将第三方的c++库(静态库和动态库都有)集成到原有的工程中去,核心问题就是c调用c++的库。
研究过程和问题:
1.有人告诉说只要在c++的代码中将需要的函数extern “C”出来,c就可以调用了,但是觉得说者比较笼统,没有实现出来。
2. 参看如下blog中的实例:http://www.cppblog.com/wolf/articles/77828.html (4.C调用C++库:部分)。也就是将c++库做一个二次封装,然后c再调用。比如说我的c++库(仿照例子生成动态库,静态库调用还没有研究)叫libaaa.so,里面有func1和func2是c将要调用的,中间库叫libmid.so,c测试程序叫testdemo.c. 在生成c++库和中间库,都没有问题,但是生成最终程序的时候说报错如下:
/lib/libmid.so: undefined reference to `func1(char*, char*, char*, char*)'
/lib/libmid.so: undefined reference to `func2(char*, char*, char*, char*, char*, char*, char*, char*, char*, char*)'
collect2: ld returned 1 exit status
请教:
1. 请教有这方面经验的兄弟给个建议,为什么会报错如上描述。
2. c程序调用c++库的方法怎么算比较好,结合我的工程实例。
3. 如何操作可以实现这种调用?
非常感谢!!!!!