我有一个C函数,我想从C++调用它.我不能使用"extern "C" void foo()"的方法,因为使用g++编译C函数失败.但是用GCC就可以很好的编译.你知道如何从C++调用函数吗?

推荐答案

编译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


(I used gcc in this example, but the principle is the same for any compiler. Build separately as C and C++, respectively, then link it together.)

C++相关问答推荐

为什么在传输 Big Data 时共享内存段的运行时间比管道更长?

intellisense不工作,甚至已经下载了c/c++扩展

GCC:try 使用—WError或—pedantic using pragmas

什么C代码将确定打开的套接字正在使用的网络适配器?

在32位处理器上优化53—32位模计算>

Can函数指针指向C++中具有不同参数连续性的函数

C中的指针增量和减量(*--*++p)

如何将常量char*复制到char数组

为什么我不能只在内存地址中添加一个int来寻址任何数组?

将uintptr_t添加到指针是否对称?

1处的解析器错误:yacc语法的语法错误

在C++中允许使用字符作为宏参数

将多项式从文件.txt加载到终端时出现问题

循环中的静态变量与块中的变量和循环

合并对 struct 数组进行排序

当用C打印过多的';\n';时输出不正确

在printf()中用%.*S格式填充长度为0的字符串是否会调用任何UB?如果是,是哪一个?

哪些C++功能可以在外部C块中使用

尽管将其标记为易失性,但 gcc 是否优化了我的等待代码?

当循环变量在溢出时未定义时,可以进行哪些优化?