Compilando più lingue insieme
-
19-09-2019 - |
Domanda
È possibile compilare più lingue insieme per ottenere il meglio dalle diverse lingue.
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.