Eventos
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
A ABI (Interface Binária do Aplicativo) é a interface que os tempos de execução e os sistemas operacionais usam para expressar detalhes binários de baixo nível. Esses detalhes podem incluir convenções de chamada (ou seja, como os parâmetros são passados e os resultados retornados), tratamento de exceções e mutilação de símbolos. A lista a seguir contém os nomes de linguagens, tempos de execução e até mesmo tecnologias gerais que você pode usar ao procurar diretrizes sobre interoperabilidade.
A linguagem C representa uma ABI estável em todas as plataformas em que há suporte para o .NET. Em geral, C é o destino assumido para APIs de interoperabilidade do .NET e é a linguagem de destino recomendada para a maioria dos cenários de interoperabilidade.
No .NET 7+, LibraryImportAttribute fornece suporte gerado pela origem para chamar funções C. Se você estiver direcionando o .NET 6 ou anterior, use DllImportAttribute. Para obter mais informações, consulte Práticas recomendadas de interoperabilidade.
Links adicionais:
LibraryImportAttribute
Passo a passoA linguagem C++ não tem ABI definida em todas as plataformas com suporte do .NET e nas implementações de compilador C++ mais populares (ou seja, MSVC, clang e GCC). Essa falta de uma ABI consistente dificulta o direcionamento direto.
A maneira recomendada de interoperar com C++ é exportar funções marcadas com extern "C"
e chamá-las de funções C.
Links adicionais:
O COM e IUnknown
o ABI foram definidos para se alinhar com a linguagem C. Ele foi projetado especificamente para suportar programação orientada a objetos, semelhante ao C++, mas para fornecer uma ABI estável. O .NET tem um histórico profundo com COM e IUnknown
, e como essa ABI foi originalmente projetada para se alinhar com C, ela tem suporte em todas as plataformas .NET.
No .NET 5+, o suporte vitalício de baixo nível, IUnknown
multiplataforma é fornecido pelo ComWrappers. No .NET 8+ GeneratedComInterfaceAttribute e GeneratedComClassAttribute fornecer projeções C# geradas pela origem. Se você estiver direcionando versões anteriores ao .NET 5, deverá usar o sistema de interoperabilidade COM interno e esse suporte é limitado ao Windows.
A plataforma WinRT representa uma evolução do COM e IUnknown
da ABI. O suporte para isso é fornecido pelo kit de ferramentas CsWinRT e é baseado no ComWrappers.
Links adicionais:
A Java Virtual Machine (JVM) define uma interface de função externa (FFI) em C para interoperar com outras plataformas. A interoperabilidade entre o .NET e o Java pode ser obtida por meio dessa interface.
Links adicionais:
O ambiente de programação Swift tem uma ABI estável bem definida que é suportada em .NET. No .NET 9+, APIs específicas que dão suporte à interoperabilidade com o Swift podem ser encontradas no System.Runtime.InteropServices.Swift namespace.
A linguagem Objective-C segue a ABI da linguagem C e tem suporte em .NET. No .NET 8+, APIs específicas que dão suporte à interoperabilidade com Objective-C podem ser encontradas no System.Runtime.InteropServices.ObjectiveC namespace.
Links adicionais:
A implementação de referência do tempo de execução do Python, CPython, define uma interface de função externa (FFI) em C para interoperar com outras plataformas. A interoperabilidade entre o .NET e o Python pode ser obtida por meio dessa interface.
Links adicionais:
A linguagem de programação Go não é suportada para interoperabilidade em processo. O runtime Go impõe requisitos para ser hospedado em um processo com outro runtime. Especificamente, esse requisito é o uso do sinalizador em threads que executam manipuladores de SA_ONSTACK
sinal. No momento, esses requisitos não são atendidos pelo .NET.
A maneira recomendada de interoperar com golang é usar um processo hospedado em golang e se comunicar por meio de um mecanismo de comunicação entre processos.
Não há suporte para a ABI ARM64EC .
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários:
Eventos
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraTreinamento
Roteiro de aprendizagem
Executar aplicativos de HPC (computação de alto desempenho) no Azure - Training
O Azure HPC é uma funcionalidade de nuvem criada com finalidade para a carga de trabalho de IA e HPC, usando processadores de ponta e interconexão InfiniBand da classe HPC para fornecer o melhor desempenho, escalabilidade e valor do aplicativo. O Azure HPC permite que os usuários obtenham inovação, produtividade e agilidade empresarial, por meio de uma variedade altamente disponível de tecnologias de HPC e IA que podem ser alocadas dinamicamente conforme as suas necessidades técnicas e empresariais mudam. E