複数の言語を一緒にコンパイルします
-
19-09-2019 - |
質問
異なる言語を最大限に活用するために、複数の言語を一緒にコンパイルすることは可能ですか?
解決
それは間違いなく可能です リンク コンパイラーとリンカーがすべて互換性がある場合、それらを個別にコンパイルした後、それらを一緒に(適切にプログラムした場合)。例えば:
g77 -c one.f
gcc -c two.c
gcc -o together one.o two.o
これにより、fortranファイルをコンパイルしてからCファイルをコンパイルし、名前のある単一の実行可能ファイルにリンクします together
(彼らが適切に互いに呼び出すと仮定します;-) GCCスイートのツールを使用します。
Microsoftの.NETは、C#、F#、Ironpython、Ironrubyなど、複数の言語を一緒に使用する人気のある方法です。 Visual Studioは、コンピレーションを互換性のあるコードとアセンブリで結合することを処理しますが、必要に応じて「手で」も行うこともできます。
「一緒にコンパイルする」ことを意味する場合、同じファイル内に複数の異なる言語を持つことを意味する場合、それも可能ですがよりまれです。たとえば、一部のCコンパイラには、同じファイル内で「インライン」アセンブリ言語を表現できる拡張機能があります。
他のヒント
はい、それは可能ですが、多くは特定の言語に依存します。たとえば、PythonからC関数またはC ++クラスを呼び出すことは、定期的に行われます。
C. do-ableでalgol-68のサンクをきれいに処理するのは本当に難しいですが、私は毎日やりたいとは思わないでしょう。
.NETプラットフォームは多言語です。オウムは、Perl、Python、Rubyを混ぜるのに最適です。あなたは何をしようとしているのですか?
言語を組み合わせるもう1つの良い例は、Javaプラットフォームです。 Groovy、Jython、Jruby、Scala、Clojure、およびJavaの他の言語をIntermixすることができます。異なる言語には異なるコンパイラが必要ですが、通常、ある言語から別の言語に電話することができます。 GroovyとScalaは、特に操作に適しています。
ああ、Javaネイティブインターフェイス(JNI)では、JavaのC、C ++、アセンブリ、およびその他の言語を呼び出すことができます。
(.NETプラットフォームは、他のポスターが指摘したように、これらの同じ属性を共有しています。)
.NETを使用している場合は、さまざまな言語でプロジェクトをNetModulesにコンパイルしてから、単一のDLL/exeにリンクできます。 Visual Studioはこれをサポートしていませんが、MSBuildはそうします。コンパイルを取得する最も簡単な方法は、.csprojファイルのコピーを編集し、出力タイプを「モジュール」に変更し、それに対してmsbuildを実行することです。次に、「link」コマンドを使用して、モジュールを最終的なexe/dllにリンクします。
を見てみましょう swig. 。それはあなたを包みます C/C++
コードをコードして、事実上他の言語から呼び出すことができます。