从C ++ / Java / C#代码调用C方法?

时间:2010-06-13 07:49:02

标签: c# java c++ c

今天的许多编程语言都基于C;比如C ++,C#,Java,Objective-C。那我可以用C ++代码调用C方法吗?或者从Java或C#调用C?或者这个目标是否达不到和不合理?请为我和其他人的理解提供快速代码示例。

5 个答案:

答案 0 :(得分:5)

C ++,C#,Objective-C和Java都可以调用C例程。以下是一些链接,它们将概述从您询问的每种语言调用C所需的过程。

答案 1 :(得分:2)

从C ++调用C的示例。将此C函数保存在名为a.c:

的文件中
int f() {
   return 42;
}

并编译它:

gcc -c a.c

将产生一个名为a.o的文件。现在在名为main.cpp的文件中编写C ++程序:

#include <iostream>
extern "C" int f();

int main() {
   std::cout << f() << std::endl;
}

并编译并链接:

g++ main.cpp a.o -o myprog

将生成一个名为myprog的可执行文件,在运行时打印42。

答案 2 :(得分:1)

在Java中调用C方法...

有一个关键字“native”,你可以在其中编写与机器相关的C代码并从Java调用它....

基本上它会创建一个DLL文件..然后你必须在你的程序中加载它......

一个很好的例子here ....

答案 3 :(得分:0)

要从Java调用C方法,有多个选项,包括:

  • JNA - Java Native Access。自由。使用方便。手工声明Java类和接口,与现有的C结构和函数并行。比JNI慢 - 每次通话几百纳秒。
  • JNI - Java Native Interface。自由。最快的选择。在Java代码和要调用的本机函数之间需要一层本机粘合代码。
  • JNIWrapper - 商业产品,类似于JNA。

答案 4 :(得分:0)

要从Java调用C / C ++,还要看一下BridJ(它就像带有C ++的JNA和更好的性能)。