Importando uma biblioteca de classe C # no Visual C ++
Pergunta
Eu tenho uma biblioteca de classe C # que contém métodos que precisam ser usados ??com um aplicativo externo. Infelizmente esta aplicação externa suporta apenas APIs externos em C / C ++.
Suponha que eu tenho um método takeIntReturnDoubleArray nesta biblioteca C # que leva um inteiro e retorna uma matriz de duplas. Todos necessidade I a fazer é ter um método C ++ que leva um inteiro, chama a biblioteca C # e retorna uma matriz de duplas ao aplicativo de chamada.
Então, em essência biblioteca C ++ está apenas agindo como um intermediário entre o C # wrapper e o aplicativo externo.
Existe uma maneira fácil de fazer isso? Eu tenho que fazer nada de especial no # lado do C para permitir que ele seja importado para C ++ facilmente? Eu vi alguma conversa de usar a instrução #import mas eu realmente não tenho idéia o que estou fazendo quando se trata de C ++.
O que é a abordagem que deve ser tomada aqui?
Solução
Você tem duas opções principais aqui:
- C ++ \ CLI - isto permite que você tem tanto código gerenciado e não gerenciado no mesmo arquivo de origem. A parcela gerida pode, em seguida, chamar o código C #.
- COM Interop -. Exponha o tipo .NET como uma interface COM e coclass correspondência que você pode facilmente usar a partir de C ++ não gerenciado
Outras dicas
COM Interop é uma maneira de abordar este problema. Você tem que ter uma camada COM para a função C # biblioteca (s) que você deseja expor para a aplicação C ++. Este ( http://msdn.microsoft.com/en-us/ biblioteca / aa302324.aspx # usingframeworktools_topic10 ) pode ser do seu interesse.