Estou uma DLL do estilo Common Language Infrastructure, então estou utilizando Pinvoke para consumir. Essa DLL foi escrita em C.
Estou com duvida da implementação, pois não consegui fazer funcionar, uma hora que deveria haver um retorno da variável retorno
com o código de erro ou não.
Exemplo da estrutura em C
void __stdcall iniciaClientCTF(
char* resultado,
char* terminal,
...
);
Exemplo de chamada do método em C
char resultado[2+1]
strcpy(resultado, "20");
iniciaClientCTF(resultado, ...);
Como estou implementando: Classe para realizar o pinvoke em C#
[DllImport("ctfclient.dll", CharSet = CharSet.Unicode)]
public static extern void iniciaClientCTF(char[] resultado, char[] terminal, ... /*restante dos parâmetros*/ );
Chamada da classe pinvoke em C#
char[] resultado = new char[2];
public void IniciaClient()
{
string parametrosCtf = string.Empty;
char[] terminal = new char[12];
... /*restante dos parâmetros*/
resultado = "00".ToCharArray();
terminal = Funcoes.Terminal.ToCharArray();
... /*restante dos parâmetros*/
TEFPinvoke.iniciaClientCTF(resultado, terminal, ... /*restante dos parâmetros*/);
}