c++程序调用c函数 and otherwise zz

C++调用C函数详解

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载于:https://www.cnblogs.com/dayouluo/archive/2006/05/10/396065.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值