zoukankan      html  css  js  c++  java
  • c++程序调用c函数 and otherwise zz

    c++程序调用c函数

    a.c
    a.h
    b.cpp

    b包含a.h得到了a中函数的原型,a.c独立编译成.o文件
    但是链接的时候 b中调用a.c中的函数老是 undefined reference

    1.  b文件中
    extern "C"
    {
     #include "a.h"
    }

    2.   我在a.h中用了这样的结构
    #ifdef __cplusplus
    extern "C" {
    #endif

    //简单的log
    extern bool log_init(const char *filename);
    extern void log_it(const char *fmt,...);

    #ifdef __cplusplus
    }
    #endif

    C调用C++ 写的lib.so(a)

    例如有一个c++的库, foo.a(so)
    里面有几个函数
    int add(int a, int b);
    int plus(int a, int b);

    首先你要写一个c++的外包
    也就是
    wapper.cpp
    extern int add(int a, int b);
    extern int plus(int a, int b);
    extern "C"
    {
    int add_wapper(int a, int b)
    {
        add(a, b);
    }
    int plus_wapper(int a, int b);
    {
        plus(a, b);
    }
    }

    然后你的c就可以调用add_wapper和plus_wapper了
    foo.c
    void func()
    {
        add_wapper(1, 2);
        plus_wapper(2, 3);
    }

    gcc foo.c wapper.cpp foo.a

  • 相关阅读:
    文件层次结构思维导图
    root的密码破解.linux
    常用Linux命令
    设计模式之-状态模式
    ThreadLocal详解及仿写实例
    SpringBoot资料
    27.枚举
    菜鸟python---元组
    菜鸟python---列表的增删改查嵌套
    菜鸟python---字符串详解
  • 原文地址:https://www.cnblogs.com/dayouluo/p/396065.html
Copyright © 2011-2022 走看看