質問

異なる言語を最大限に活用するために、複数の言語を一緒にコンパイルすることは可能ですか?

役に立ちましたか?

解決

それは間違いなく可能です リンク コンパイラーとリンカーがすべて互換性がある場合、それらを個別にコンパイルした後、それらを一緒に(適切にプログラムした場合)。例えば:

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++ コードをコードして、事実上他の言語から呼び出すことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top