C调用C++动态库,静态库
来源:互联网 发布:java 命令行执行main 编辑:程序博客网 时间:2024/05/18 03:43
C调用C++动态库,静态库
//paullib.cpp
1 #include <iostream>
2 using namespace std;
3
4 class paul
5 {
6 int a,b;
7 public:
8 int add(int a,int b);
9 };
10
11 int paul::add(int a,int b)
12 {
13 int sum;
14 sum=a+b;
15 return sum;
16 }
17
18 extern "C" //如果没有则不行;
19 {
20 int callfunc()
21 {
22 paul m;
23 cout<<m.add(3,4)<<endl;
24 }
25 }
//paul.c
1 #include <stdio.h>
2 extern void callfunc();//要被外部函数调用;
3 int main()
4 {
5
6 callfunc();
7 return 0;
8 }
静态库:
# G++ -c paullib.cpp
# ar –cr slib paullib.o
#gcc -o paul paul.c -L. slib -lstdc++ //注意这个程序还是要调用c++的库函数,加上-LSTDC++就可以了
注意:nm slib看一下:
动态库:
[root@localhost 08-14]# g++ paullib.cpp -fPIC -shared -o libpaul.so
[root@localhost 08-14]# cp libpaul.so /lib
[root@localhost 08-14]# gcc paul.c -L. -lpaul -o paul
注意:-lpaul不要写错了;
[root@localhost 08-14]# nm libpaul.so
00001cd4 A __bss_start
00000944 T callfunc //注意CALLFUNC后面没有V,如果没有加EXTERN “C” 则有
00000864 t call_gmon_start
00001cd4 b completed.1
00001c80 d __CTOR_END__
00001c78 d __CTOR_LIST__
U __cxa_atexit@@GLIBC_2.1.3
w __cxa_finalize@@GLIBC_2.1.3
不加extern “c”
00001b9c d p.0
000009ee t __tcf_0
0000099a t _Z41__static_initialization_and_destruction_0ii
00000948 T _Z8callfuncv
00000934 T _ZN4paul3addEii
U _ZNSolsEi@@GLIBCPP_3.2
U _ZNSolsEPFRSoS_E@@GLIBCPP_3.2
U _ZNSt8ios_base4InitC1Ev@@GLIBCPP_3.2
U _ZNSt8ios_base4InitD1Ev@@GLIBCPP_3.2
U _ZSt4cout@@GLIBCPP_3.2
- C调用C++动态库,静态库
- C调用C++动态库以及静态链接库
- Linux C:生成、调用静态库/动态库,.a,.so
- Linux下C调用静态库和动态库
- Go中调用C的动态库与静态库
- 【C/C++】动态库与静态库
- 【C/C++】动态库与静态库
- [C/C++] 动态库与静态库
- Golang与C互用以及调用C的so动态库和a静态库
- 静态库和共享库(动态库) 动态调用共享库 C的错误处理
- CGO,GOLANG调用C库,调用代码、静态库或动态库
- java调用c动态库
- python 调用 C 动态库
- python3调用C动态库
- python 调用 C 动态库
- 【C/C++】静态链接库、动态链接库、extern "C"
- C/C++静态库与动态库
- 【c++】C++静态库与动态库
- vmware安装ubuntu9.04 linux的一些问题的解决
- CTE使用[SQL server 2005]
- 当老板真好
- 网络爬虫技术
- .Net学院:推出8月暑期的最后疯狂!!
- C调用C++动态库,静态库
- c语言编程 存储数据问题
- 连续正整数
- 面向接口编程详解(一)
- 面向接口编程详解(二)
- 面向接口编程详解(三)
- 体验spring面向接口编程
- 我是主考官:做狼才是出路(回信3)
- 测试内存规范是大端还是小端