我有一个C函数,我想从C 调用。我无法使用“ extern "C" void foo()”这样的方法,因为C函数无法使用g 进行编译。但是使用gcc可以很好地编译。有什么想法如何从C ++调用函数吗?
extern "C" void foo()
像这样编译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开始于:
othercode.cpp
extern "C" { #include "somecode.h" }
somecode.h 应该包含以下内容:
somecode.h
#ifndef SOMECODE_H_ #define SOMECODE_H_ void foo(); #endif
(在此示例中,我使用了gcc,但原理对于任何编译器都是相同的。分别以C和C ++进行构建,然后将其链接在一起。)