您现在的位置:机电论文网>> 工控与编程>> 正文内容

C/C++ 混合编程

作者: 来源: 发布时间:2011/2/15 9:28:12  点击数:1616

 

如何在C++中调用已经被编译好的C函数?下面的小例子展示了这个过程:

1.    假设某C函数如下定义


/* file foo.c*/

#include <stdio.h>

int add(int x, int y)

{

  return x + y;

}

 

编译并生成DLL:

gcc -fpic –c foo.c

gcc –shared -o foo.dll foo.o

 

2.    在C++中调用这个被编译后的C函数

 

// file test.cpp

#include <iostream>

extern "C"

{

  int add(int x, int y);

}

 

int main()

{

#ifdef __cplusplus

  std::cout << "C++ defined" << std::endl;

#else

  std::cout << "C++ undefined" << std::endl;

#endif

 

  std::cout << add(1, 2) << std::endl;

  return 0;

}

编译并生成可执行文件:

g++ -o test.exe test.cpp foo.dll

 

3.    原因分析:

函数add()被C编译器编译后在库中的名字为_add,而C++编译器则会产生_add_int_int之类的名字用来支持函数重载和类型安全连接。由于编译后的名字不同,C++程序不能直接调用C函数。C++提供了一个C连接交换指定符号extern “C” 来解决这个问题。
 

更多
字体:【】-【】-【】【关闭此页

上一篇:机械制图介绍'   下一篇:教你怎么检查电路原理图'


特别声明:机电之家(http://www.jdzj.com )所共享的机电类资料,机电论文、机电类文章、机电企业类管理制度、机电类软件都来自网上收集,其版权归作者本人所有,如果有任何侵犯您权益的地方,请联系我们,我们将马上进行处理。购买的论文都出自原创,保证作者的原创的版权的转让,任何纠纷由法律解决。