c调用c++ 方法

时间:2022-09-20 19:28:45

 //cpp.h

  
 
 
  1. #ifndef __cpp_h__ 
  2. #define __cpp_h__ 
  3.  
  4. class class1 { 
  5.     class1(); 
  6.     ~class1(); 
  7. public
  8.     int I; 
  9.     int J; 
  10.     int getI(void); 
  11. }; 
  12. #endif 
  13. //cpp.cpp 
  14. #include "cpp.h" 
  15. #include "c.h" 
  16.  
  17. class1::class1() 
  18. {} 
  19.  
  20. class1::~class1() 
  21. {} 
  22.  
  23. int class1::getI(void
  24.     return I++; 
  25.  
  26. extern "C" 
  27. int get_class1_I(struct1 * p) 
  28.     class1 * pClass1 = (class1 *)p; 
  29.     return pClass1->getI(); 
  30. //c.h

     

         
        
        
    1. #ifndef __c_h__ 
    2. #define __c_h__ 
    3.  
    4. #ifdef __cplusplus 
    5. extern "C" { 
    6. #endif 
    7.  
    8.     typedef struct { 
    9.         int I; 
    10.         int J; 
    11.     }struct1; 
    12.  
    13. #ifdef __cplusplus 
    14. #endif 
    15. #endif 

    //c.c

     

         
        
        
    1. #include "c.h" 
    2. #include <stdio.h> 
    3.  
    4. extern int get_class1_I(void * p); 
    5.  
    6. struct1 s; 
    7.  
    8. int main(void
    9.     printf("c: %d\n", get_class1_I(&s)); 
    10.     printf("c: %d\n", get_class1_I(&s)); 
    11.  
    12.     return 0; 

    说明:

    C++: cpp.h cpp.cpp

    C: c.h  c.c

     

    C调用C++

     

    gcc -c cpp.cpp -o cpp.o

    gcc -c c.c -o c.o

    gcc -o man cpp.o c.p  -lstdc++

本文出自 “混迹于挨踢的行业” 博客,请务必保留此出处http://zhaiku.blog.51cto.com/2489043/1160342