Articles of pinvoke

Melhor maneira de acessar objects COM de c #

Estou planejando usar vários objects que são expostos como objects COM. Para torná-los mais fáceis de usar, eu gostaria de envolvê-los como objects C #. Qual é a melhor abordagem para isso?

Como faço para manipular parâmetros struct null ou opcional dll em c #

Como faço para lidar com argumentos struct opcionais em methods dll chamados de c # usando pinvoke? Por exemplo, o parâmetro lpSecurityAttributes aqui deve ser passado null quando ausente. A maneira correta de passar struct ‘s parece estar usando ref , mas não pode ter parâmetros opcionais, ou ter null em geral. Que maneiras existem […]

Uma chamada para a function PInvoke ” desequilibrou a pilha

Eu estou recebendo este erro estranho em algumas coisas que eu tenho usado por um bom tempo. Pode ser uma coisa nova no Visual Studio 2010, mas não tenho certeza. Eu estou tentando chamar uma function não autorizada escrita em C ++ de c #. Do que eu li na internet e a mensagem de […]

Traga uma janela para a frente no WPF

Como posso levar meu aplicativo WPF para a frente da área de trabalho? Até agora eu tentei: SwitchToThisWindow(new WindowInteropHelper(Application.Current.MainWindow).Handle, true); SetWindowPos(new WindowInteropHelper(Application.Current.MainWindow).Handle, IntPtr.Zero, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); SetForegroundWindow(new WindowInteropHelper(Application.Current.MainWindow).Handle); Nenhum deles está fazendo o trabalho ( Marshal.GetLastWin32Error() está dizendo que essas operações foram concluídas com sucesso, e os atributos P / Invoke […]

Passando strings de C # para C ++ DLL e back – exemplo mínimo

Eu estou tentando fazer o exemplo mínimo mais simples absoluto de como passar seqüências de caracteres para e de uma DLL de C ++ em c #. Meu C ++ se parece com isso: using std::string; extern “C” { string concat(string a, string b){ return a + b; } } Com um header como using […]

PInvoke para function C que retorna char *

Eu estou tentando escrever algum código c # que chama um método de uma DLL não gerenciada. O protótipo para a function na dll é: extern “C” __declspec(dllexport) char *foo(void); Em C #, usei pela primeira vez: [DllImport(_dllLocation)] public static extern string foo(); Parece funcionar na superfície, mas estou recebendo erros de corrupção de memory […]

Como faço para chamar C ++ / CLI de c #?

Eu tenho uma class implementada em C ++ que é responsável pela computação aritmética do programa e uma interface usando o WPF. Eu processar a input com c # mas então como posso usar minha class de C ++? Eu vi alguns comentários sobre como fazer uma class de wrapper C ++ gerenciada interagir com […]

usando uma class definida em uma dll c ++ no código c #

Eu tenho uma dll que foi escrita em c + +, eu preciso usar essa dll no meu código c #. Depois de pesquisar, descobri que usar o P / Invoke me daria access à function de que preciso, mas essas funções são definidas em uma class e usam variables ​​de membro privado não-estático. Então […]

pinvokestackimbalance – como posso corrigir isso ou desativá-lo?

Eu apenas mudei para o vs2010 do vs2008. Exatamente a mesma solução, exceto que agora todas as chamadas para um C ++ dll geram uma exceção ‘pinvokestackimbalance’. Essa exceção não é acionada em 2008. Tenho access completo à DLL do C ++ e ao aplicativo de chamada. Não parece haver nenhum problema com o pinvoke, […]

Não é possível carregar a DLL (o módulo não pôde ser encontrado HRESULT: 0x8007007E)

Eu tenho biblioteca dll com código de API C ++ não gerenciado eu preciso usar no meu aplicativo .NET 4.0. Mas cada método que eu tento carregar minha dll eu recebo um erro: Não é possível carregar DLL ‘MyOwn.dll’: O módulo especificado não foi encontrado. (Exceção de HRESULT: 0x8007007E) Eu li e tentei várias soluções […]