一尘不染

从C ++代码调用C函数

linux

我有一个C函数,我想从C 调用。我无法使用“ extern "C" void foo()”这样的方法,因为C函数无法使用g
进行编译。但是使用gcc可以很好地编译。有什么想法如何从C ++调用函数吗?


阅读 224

收藏
2020-06-02

共1个答案

一尘不染

像这样编译C代码:

gcc -c -o somecode.o somecode.c

然后是这样的C ++代码:

g++ -c -o othercode.o othercode.cpp

然后使用C ++链接器将它们链接在一起:

g++ -o yourprogram somecode.o othercode.o

当您包含C函数的声明时,还必须告诉C ++编译器C头即将到来。因此othercode.cpp开始于:

extern "C" {
#include "somecode.h"
}

somecode.h 应该包含以下内容:

 #ifndef SOMECODE_H_
 #define SOMECODE_H_

 void foo();

 #endif

(在此示例中,我使用了gcc,但原理对于任何编译器都是相同的。分别以C和C ++进行构建,然后将其链接在一起。)

2020-06-02