博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c调用c++函数
阅读量:6931 次
发布时间:2019-06-27

本文共 2102 字,大约阅读时间需要 7 分钟。

  • c调用c++普通函数
    cpp_test/cpp.h
#ifndef CPP_H#define CPP_H#include "extern_cpp.h"int add(int a, int b);char add(char a, char b);#endif // CPP_H
    cpp_test/extern_cpp.h
#ifndef EXTERN_CPP_H#define EXTERN_CPP_H#ifdef __cplusplusextern "C"{#endifint add_int(int a, int b);char add_char(char a, char b);#ifdef __cplusplus}#endif#endif // EXTERN_CPP_H
    cpp_test/cpp.cpp
#include "cpp.h"#include 
int add(int a, int b){ std::cout << "int a+b=" << a+b << std::endl; return a+b;}char add(char a, char b){ std::cout << "char a+b=" << a+b << std::endl; return a+b;}int add_int(int a, int b){ return add(a,b);}char add_char(char a, char b){ return add(a,b);}
    c_test/main.c
#include 
#include "../cpp_test/extern_cpp.h"int main(int argc, char *argv[], char *env[]){ printf("%d\n", add_int(2,3)); printf("%c\n", add_char(20, 30)); return 0;}
编译 g++ -c cpp.cpp       
    gcc main.c ../cpp_test/cpp.o -lstdc++
  • c调用c++类函数
     cpp_test/cpp.h
#ifndef CPP_H#define CPP_H#include "extern_cpp.h"struct example{public:    example(void);    example(int i, int j);    ~example(void);    int add(void);    int a,b;};#endif // CPP_H
    cpp_test/extern_cpp.h
#ifndef EXTERN_CPP_H#define EXTERN_CPP_H#ifdef __cplusplusextern "C" {#endiftypedef struct example example;example* exmaple_create(int a, int b);void example_delete(example* e);int example_add(example* e);#ifdef __cplusplus}#endif#endif // EXTERN_CPP_H
    cpp_test/cpp.cpp
#include "cpp.h"#include 
example::example(void){}example::example(int i, int j):a(i),b(j){}example::~example(void){}int example::add(void){ std::cout << "a+b=" << a+b << std::endl; return a+b;}example* exmaple_create(int a, int b){ return new example(a, b);}void example_delete(example* e){ delete e;}int example_add(example* e){ return e->add();}
    c_test/main.c
#include 
#include "../cpp_test/extern_cpp.h"int main(int argc, char *argv[], char *env[]){ example *e = exmaple_create(2, 3); printf("%d\n", example_add(e)); example_delete(e); return 0;}
编译 g++ -c cpp.cpp

        gcc main.c ../cpp_test/cpp.o -lstdc++

转载地址:http://chmjl.baihongyu.com/

你可能感兴趣的文章
java内存
查看>>
实习日记7.28
查看>>
JavaScript测试工具比较: QUnit, Jasmine, and Mocha
查看>>
调试4
查看>>
我在Eclipse中使用Tomcat插件的遇到的一些问题
查看>>
FWT
查看>>
yum安装mysql后root用户的临时密码
查看>>
GridView使用技巧之:新增记录、GridView内数据验证、删除信息提示
查看>>
六、JVM命令和工具
查看>>
(Java后端 Java web)面试时如何展示自己非技术方面的能力(其实就是综合能力)...
查看>>
selenium切换到iframe
查看>>
项目选题报告
查看>>
Codeforces 785D - Anton and School - 2(组合数学)
查看>>
.net调用存储过程详解
查看>>
性能测试如何计算设置并发数
查看>>
Linux下chkconfig命令详解
查看>>
重定位子进程的标准输出至管道
查看>>
cookies的常见方式
查看>>
SQL获取当月天数的几种方法
查看>>
typescritp 导出默认接口
查看>>