c++程序调用c函数 and otherwise zz
2006-05-10 12:17
225 查看
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
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
相关文章推荐
- 如果C++程序要调用已经被编译后的C函数,该怎么办?
- C++程序调用已经被编译后的C函数
- 如果C++程序要调用已经被编译后的C函数,该怎么办?
- c++程序调用c函数
- C++程序调用C函数
- C++程序调用已经被编译后的C函数
- C++程序调用C函数
- 如果C++程序要调用已经被编译后的C函数,需要extern “C”
- 如果C++程序要调用已经被编译后的C函数,该怎么办?
- c语言写的程序里,调用C++写的库里的函数
- 1Java程序通过JNI调用本地C++_第一个示例_HelloWorld
- C/C++调用MLu的入门程序
- 用JNI进行Java编程---从Java程序调用C/C++代码
- C函数和C++函数相互调用
- C++调用C函数
- java程序如何调用C++代码
- 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?----转
- JNI编程Demo----Java程序调用C&C++编译好的库文件
- C++调用c函数
- C++调用C函数问题