C# 如何在我的C代码上从库中调用C方法?
我有一个DLL(CliSiTef32I.DLL),我需要在我的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[]
我如何才能做到这一点?这些可能会起作用:
[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)