如何在c里调用c++的类函数
来源:互联网 发布:原生js获取data属性 编辑:程序博客网 时间:2024/05/07 10:02
http://bbs.sjtu.edu.cn/bbscon?board=C&file=M.1300711242.A
在c++中定义了一个类,现在需要在c中调用这个类中的函数。
add.h1
2 class Add{
3 public:
4 Add();
5 int x,y;
6 int sum();
7 };
8
9 extern "C"{
10 int call_add_sum_Cplus(void *pAdd);
11 void * constructor_add_Cplus();
12 void destructor_add_Cplus(void * pAdd);
13 }
add.cpp
1 #include "add.h"
2
3 Add::Add()
4 {
5 x=2;
6 y=3;
7 }
8
9 int Add::sum()
10 {
11 return x+y;
12 }
13
14 int call_add_sum_Cplus(void *pAdd)
15 {
16 return ((Add *)pAdd)->sum();
17 }
18
19
20 void * constructor_add_Cplus()
21 {
22 Add *p = new Add();
23 return (void *)p;
24 }
25
26 void destructor_add_Cplus(void * pAdd)
27 {
28 Add *p = (Add *)pAdd;
29 delete p;
30 }
31
32
add_c.h
1
2
3 int call_add_sum_C(void *pAdd);
4 void * constructor_add_C();
5 void destructor_add_C(void *pAdd);
6
add_c.c
1 #include "add_c.h"
2
3 int call_add_sum_Cplus(void *pAdd);
4 void * constructor_add_Cplus();
5 void destructor_add_Cplus(void * pAdd);
6
7 int call_add_sum_C(void *pAdd)
8 {
9 return call_add_sum_Cplus(pAdd);
10 }
11
12 void * constructor_add_C()
13 {
14 return constructor_add_Cplus();
15 }
16
17
18 void destructor_add_C(void *pAdd)
19 {
20 destructor_add_Cplus(pAdd);
21 }
main.c
1 #include <stdio.h>
2
3 void main(void)
4 {
5 void *p = constructor_add_C();
6 int a = call_add_sum_C(p);
7 printf("a = %d \n",a);
8 destructor_add_C(p);
9 }
10
Makefile
1 easy:main.o add.o add_c.o
2 gcc main.o add_c.o add.o -lstdc++ -o easy
3 main.o:main.c
4 gcc -c main.c -o main.o
5 add.o:add.cpp
6 g++ -c add.cpp -o add.o
7 add_c.o:add_c.c
8 gcc -c add_c.c -o add_c.o
9
10 clean:
11 rm *.o
结果
yang@ubuntu:~/Cincludeclass$ ls
add_c.c add_c.o add.h easy main.o
add_c.h add.cpp add.o main.c Makefile
yang@ubuntu:~/Cincludeclass$ ./easy
a = 5
- 如何在c里调用c++的类函数
- 如何在一个.c文件里调用另一个.c文件里的变量
- JAVA里如何调用C/C++的DLL里的函数
- 为什么在C++里调用被C编译器编译的函数,要加extern "c"
- 如何在类里调用MXML内声明的函数
- 如何在C/C++语言中调用 sqlite 的函数
- 如何在java中调用C的函数
- 如何在IOS项目中调用C的函数
- 如何在C++中调用 C 函数?
- 如何在Swift中调用C函数
- 如何在C++中调用C函数
- c语言里如何调用汇编里的变量?
- 如何在C中调用C++函数 与 如何在C++中调用C的函数(待修改)
- C语言一个源文件如何调用另一个源文件里的函数
- 如何在pl/sql里调用C语言写的程序
- C/C++如何在Visual Studio里建立并运行多个含main函数的文件
- C调用Python脚本文件里的函数(转)
- 怎样从Perl中调用C库里的函数
- Google上海如何测试搜索产品
- list contains
- ios 确认网络环境3G/WIFI,网络状态监测的总结
- hdu
- 酷我音乐盒的广告弹窗是怎么做的,求高手解答
- 如何在c里调用c++的类函数
- NDK 介绍
- 虚拟交换机项目Open vSwitch源码简单阅读--网络数据包流向
- 【书摘】iPad应用开发实战:内存管理
- viplugin 破解
- 2012年08月22日
- 局域网内,一段时间后网速越来越慢,最后全部断线,掉线后无法登入路由器界面,只有把路由器重新启动后才一切恢复正常
- 多媒体文件格式MIME
- 未来的电子杂志怎么赚钱?