Como posso chamar código gerenciado .NET do meu código gerenciado-un C ++ no Windows e vice-versa?
Pergunta
Eu tenho um aplicativo puro C ++ desenvolvido usando VC 6.0. Gostaria que este aplicativo para fazer uso de uma biblioteca desenvolvido em C #. Como faço para chamar os métodos na biblioteca C # da minha executável nativa? Eu não quero converter meu conseguiu-un aplicativo nativo para código gerenciado C ++. Da mesma forma, como eu faço o contrário? PInvoke é a única opção? Gostaria muito de receber quaisquer referências ou ponteiros para o mesmo.
Solução
Para chamar código gerenciado a partir de C ++ não gerenciado, use ClrCreateManagedInstance ou exportar seus tipos em sua conseguiu montagem como COM visível, e a utilização COM. Para chamar código não gerenciado de gerenciado, o uso COM ou P / Invoke.
Outras dicas
principal linha da Microsoft sobre isso é o uso de interoperabilidade COM. Há, porém, uma outra opção, por vezes referido como "Reverse P / Invoke" há um post interessante aqui e alguns mais aqui
Além disso, se você tem Delphi.NET (agora extinto) essa linguagem permite exportar métodos estáticos como faria com qualquer função de dll, então você pode ligar para o Delphi.NET montagem como uma DLL nativa normal.