3

是否可以一起编译多种语言以充分利用不同的语言。

4

7 回答 7

6

如果编译器和链接器都兼容,那么在单独编译它们之后绝对可以将它们链接在一起(如果经过适当编程)。例如:

g77 -c one.f
gcc -c two.c
gcc -o together one.o two.o

together这会编译一个 Fortran 文件,然后是一个 C 文件,然后使用 GCC 工具套件将它们链接到一个名为(假设它们正确地相互调用;-)的单个可执行文件中。

Microsoft 的 .NET 是一种将多种语言一起使用的流行方式——C#、F#、IronPython、IronRuby 等等。Visual Studio 将处理编译成兼容代码并在程序集中连接在一起,但如果您愿意,也可以“手动”完成。

如果“一起编译”是指在同一个文件中有多种不同的语言,这也是可能的,但很少见——例如,一些 C 编译器具有扩展,可以让你在同一个文件中表达“内联”汇编语言。

于 2009-12-16T04:12:26.763 回答
3

是的,这是可能的,但很大程度上取决于特定的语言。例如,从 Python 调用 C 函数或 C++ 类是例行公事。

于 2009-12-16T04:07:53.563 回答
1

如果您使用的是 .net,您可以将不同语言的项目编译为 netmodules,然后将它们链接到单个 dll/exe 中。Visual Studio 不支持此功能,但 msbuild 支持。获得编译的最简单方法是编辑 .csproj 文件的副本并将输出类型更改为“模块”,然后针对它运行 msbuild。然后使用“链接”命令将您的模块链接到最终的 exe/dll 中。

于 2009-12-18T06:26:47.483 回答
1

.Net platform is multi-lingual. Parrot is great for mixing Perl, Python, Ruby. What are you trying to do?

于 2009-12-16T04:21:43.437 回答
1

Another good example of combining language is the Java platform. You can intermix Groovy, Jython, JRuby, Scala, Clojure, and other languages with Java. The different languages require different compilers, but you can generally call from one language to another. Groovy and Scala are particularly well suited for inter-operation.

Oh, and the Java Native Interface (JNI) lets you call C, C++, assembly and other languages from Java.

(The .NET platform shares these same attributes, as other posters have noted.)

于 2009-12-16T04:25:40.853 回答
1

在 C 中干净利落地处理 Algol-68 thunk 真的很难。可行,但我不认为我想每天都这样做,

于 2009-12-16T04:14:22.703 回答
0

看看斯威格。它包装了您的C/C++代码,以便您可以从几乎任何其他语言调用它。

于 2009-12-17T14:53:56.337 回答