Compilando vários idiomas
-
19-09-2019 - |
Pergunta
É possível compilar vários idiomas para obter o melhor dos diferentes idiomas.
Solução
Definitivamente é possível link juntos (se for adequadamente programados) depois de compilá -los separadamente, se os compiladores e ligantes forem todos compatíveis. Por exemplo:
g77 -c one.f
gcc -c two.c
gcc -o together one.o two.o
Isso compila um arquivo fortran, depois um arquivo C, depois os vincula em um único executável nomeado together
(Supondo que eles se chamam corretamente ;-) Usando o conjunto de ferramentas do GCC.
O .NET da Microsoft é uma maneira popular de usar vários idiomas juntos - C#, F#, IronPython, IronRuby e assim por diante. O Visual Studio lidará com as compilações em códigos compatíveis e a união em montagens, mas você também pode fazê -lo "manualmente", se desejar.
Se por "compilar", você quer dizer com vários idiomas diferentes no mesmo arquivo, isso também é possível, mas mais raro - por exemplo, alguns compiladores C têm extensões para permitir que você expresse o idioma de montagem "embutido" dentro do mesmo arquivo.
Outras dicas
Sim, é possível, mas depende muito dos idiomas específicos. Por exemplo, chamar funções C ou classes C ++ do Python é feito rotineiramente.
É realmente difícil lidar com o Algol-68 de C.
A plataforma .NET é multilíngue. Parrot é ótimo para misturar Perl, Python, Ruby. O que você está tentando fazer?
Outro bom exemplo de combinação de linguagem é a plataforma Java. Você pode misturar groovy, jython, jruby, scala, clojure e outras línguas com java. Os diferentes idiomas requerem diferentes compiladores, mas você geralmente pode ligar de um idioma para outro. Groovy e Scala são particularmente adequados para a inter-operação.
Ah, e a interface nativa de Java (JNI) permite ligar para C, C ++, Assembly e outros idiomas da Java.
(A plataforma .NET compartilha esses mesmos atributos, como outros pôsteres observaram.)
Se você estiver usando o .NET, poderá compilar seus projetos em diferentes idiomas para os módulos de netmodules e depois vinculá -los a uma única DLL/EXE. O Visual Studio não suporta isso, mas o MSBuild o faz. A maneira mais fácil de obter uma compilação é editar uma cópia do seu arquivo .csproj e alterar o tipo de saída para "módulo" e apenas executar o msbuild contra ele. Em seguida, use o comando "link" para vincular seus módulos ao seu EXE/DLL final.
Dar uma olhada em Gole. Isso envolve o seu C/C++
código para que você possa chamá -lo de praticamente qualquer outro idioma.