Domanda

È possibile compilare più lingue insieme per ottenere il meglio dalle diverse lingue.

È stato utile?

Soluzione

È sicuramente possibile collegamento loro insieme (se opportunamente programmati) dopo averli compilati separatamente, se i compilatori e i linker sono tutti compatibili. Per esempio:

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

Questo compila un file fortran, quindi un file C, quindi li collega insieme in un singolo eseguibile denominato together (Supponendo che si chiamino correttamente ;-) usando la suite di strumenti GCC.

Il .NET di Microsoft è un modo popolare di utilizzare più lingue insieme: C#, F#, IronPython, Ironruby e così via. Visual Studio gestirà le compilation in codici compatibili e l'adesione agli assiemi, ma se lo desideri, puoi anche farlo "a mano".

Se "compilando insieme" intendi avere più lingue diverse all'interno dello stesso file, è anche possibile ma più raro, ad esempio alcuni compilatori C hanno estensioni per consentire di esprimere il linguaggio dell'assemblaggio "in linea" all'interno dello stesso file.

Altri suggerimenti

Sì, è possibile, ma molto dipende dalle lingue specifiche. Ad esempio, chiamare le funzioni C o le classi C ++ di Python vengono eseguite abitualmente.

È davvero difficile gestire in modo pulito Algol-68 thunks in C. Do-able, ma non credo che vorrei farlo ogni giorno,

La piattaforma .NET è multilingue. Il pappagallo è ottimo per mescolare Perl, Python, Ruby. Cosa stai cercando di fare?

Un altro buon esempio di combinazione del linguaggio è la piattaforma Java. Puoi mescolare Groovy, Jython, Jruby, Scala, Clojure e altre lingue con Java. Le diverse lingue richiedono compilatori diversi, ma generalmente puoi chiamare da una lingua all'altra. Groovy e Scala sono particolarmente adatti per l'inter-operazione.

Oh, e l'interfaccia nativa Java (JNI) ti consente di chiamare C, C ++, Assembly e altre lingue di Java.

(La piattaforma .NET condivide questi stessi attributi, come hanno notato altri poster.)

Se stai usando .NET, puoi compilare i tuoi progetti in diverse lingue su NetModules e quindi collegarli in una singola DLL/EXE. Visual Studio non lo supporta, ma MSBuild lo fa. Il modo più semplice per ottenere una compilazione è modificare una copia del tuo file .csproj e modificare il tipo di output in "modulo" ed eseguire semplicemente MSBuild contro di esso. Quindi usa il comando "Link" per collegare i moduli nella tua EXE/DLL finale.

Date un'occhiata al Swig. Avvolge il tuo C/C++ Codice in modo da poterlo chiamarlo praticamente da qualsiasi altra lingua.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top