C# 如何在我的C代码上从库中调用C方法?

C# 如何在我的C代码上从库中调用C方法?,c#,c++,c,dll,dllimport,C#,C++,C,Dll,Dllimport,我有一个DLL(CliSiTef32I.DLL),我需要在我的C代码上调用以下方法: 我如何才能做到这一点?这些可能会起作用: [DllImport("CliSiTef32I.dll")] public static extern int ConfiguraIntSiTefInterativoEx ( byte[] IPSiTef, byte[] IdLoja, byte[] IdTerminal, short Reservado, byte[]

我有一个DLL(CliSiTef32I.DLL),我需要在我的C代码上调用以下方法:


我如何才能做到这一点?

这些可能会起作用:

[DllImport("CliSiTef32I.dll")]
public static extern int ConfiguraIntSiTefInterativoEx (
    byte[] IPSiTef, 
    byte[] IdLoja, 
    byte[] IdTerminal, 
    short Reservado, 
    byte[] ParametrosAdicionais)

[DllImport("CliSiTef32I.dll")]
public static extern int IniciaFuncaoSiTefInterativo (
    long Funcao, 
    byte[] Valor, 
    byte[] CupomFiscal, 
    byte[] DataFiscal, 
    byte[] HoraFiscal, 
    byte[] Operador, 
    byte[] ParamAdic)
不过,我不完全确定
short
的含义。如果这是一个16位带符号的整数,这将起作用


另外,如果返回的32位int实际上是bool,则可以声明返回值。

为什么使用byte[]而不是char[]?@Felipe,因为c#char与8位的c char不同,不是16位。那么,如何将c#string转换为byte[]?@Felipe可能
Encoding.Default.GetBytes(somestring) C++<代码>长< /C> > C++ >代码> int <代码>。而且很可能所有的
char*
参数都会简单地转换为
string
。如何转换取决于您尚未提供的信息。什么是呼叫约定?是cdecl吗?什么是
char*
参数。它们是弦吗?什么编码?ANSI?ASCII码?UTF-8?它们是输入参数吗?或者它们是输出的?这似乎不太可能。
[DllImport("CliSiTef32I.dll")]
public static extern int ConfiguraIntSiTefInterativoEx (
    byte[] IPSiTef, 
    byte[] IdLoja, 
    byte[] IdTerminal, 
    short Reservado, 
    byte[] ParametrosAdicionais)

[DllImport("CliSiTef32I.dll")]
public static extern int IniciaFuncaoSiTefInterativo (
    long Funcao, 
    byte[] Valor, 
    byte[] CupomFiscal, 
    byte[] DataFiscal, 
    byte[] HoraFiscal, 
    byte[] Operador, 
    byte[] ParamAdic)