赞
踩
C++调用C很方便, 如果C调用C++,主要思想是将C++的动态库封装一层,这一层采用C语言实现,主要封装C++中的类
- #ifndef TESTCLASS_H
- #define TESTCLASS_H
- #include<iostream>
- #include<stdio.h>
-
- class ValueClass
- {
-
- private:
- int value;
- int sum;
- public:
- ValueClass();
- void Add(int i, int j);
- };
-
- #endif
- #include "test_class.h"
- ValueClass::ValueClass(){
- printf("hello world \n");
- }
- void ValueClass::Add(int i, int j){
- sum = i+j;
- printf("sum : %d value : %d\n",sum,value);
- }
g++ test_class.cpp -shared -o libtestclass.so -I./ -fPIC
- #ifndef _TEST_WRAPPER_H
- #define _TEST_WRAPPER_H
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- void myValueClass(int a, int b);
-
- #ifdef __cplusplus
- }
- #endif
- #endif
- #include "TestWrapper.h"
- #include "test_class.h"
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- void myValueClass(int a, int b){
- ValueClass t;
- t.Add(a,b);
- }
-
- #ifdef __cplusplus
- };
- #endif
g++ TestWrapper.c -shared -o libmyclass.so -L./ -ltestclass -fPIC -Xlinker -rpath=./
- #include "TestWrapper.h"
- int main()
- {
- myValueClass(1,2);
- }
gcc main.c -o main -lmyclass -L./ -I . -Xlinker -rpath=./
该方法比较方便,也有其他方法实现
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。