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?

Foi útil?

Solução

Você tem duas opções principais aqui:

  1. 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 #.
  2. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top