Pergunta

Eu preciso fazer alguma injeção processo usando C ++, mas eu preferiria usar C # para tudo que não seja as coisas de baixo nível. Ouvi falar de "embrulho função" e "empacotamento" e ter feito um pouco de Google busca e encontraram pedaços de informação aqui e ali, mas ainda estou realmente falta.

As coisas que tenho lido, a fim de utilidade;
http://msdn.microsoft.com/en-us /library/ms235281(VS.80).aspx
http://www.drdobbs.com/cpp/184401742
http://geeklit.blogspot.com/2006/ 08 / chamando-c-lib-de-c.html

Como posso envolver todo o material nível inferior (C ++ nativo) em C # para que eu possa facilmente comandar essas funções em uma língua que eu estou mais confortável com, C #?

Qualquer informação sobre o tema é muito apreciado.

Foi útil?

Solução

Eu acho P / Invoke é realmente a abordagem mais simples:

  • Criar um DLL no não gerenciado C ++, contendo todas as funcionalidades que você precisa fazer a injeção.
  • Em seu código C #, declarar alguns métodos static extern, e usar o atributo DllImport apontar-lhes a sua DLL C ++. Para mais detalhes, consulte o link fornecido por arul em sua resposta .

Note que P / Invoke não se limita a "funções API do Windows." - você pode chamar funções expostos por qualquer DLL nativa

A desvantagem potencial de P / Invoke é que você terá que fornecer as assinaturas para as suas funções em C ++, possivelmente especificando alguns triagem menos do que óbvio. Nesse caso, você poderia considerar a construção de um servidor COM em vez de um "simples" DLL, e usando interoperabilidade para chamar seu código de C #.

Outras dicas

Você quer usar P / Invoke, consulte MSDN Magazine .

Se Pinvoking não o que você quer fazer é, em seguida, criar um aplicativo gerenciado C ++. Use C ++ nativo para fazer as coisas injeção processo. Use c conseguiu ++ para criar uma interface amigável .NET para este comportamento nativa. Este pode então ser chamado de C #.

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