【问题标题】:How can I call a C method from a library on my C# code?如何从 C# 代码的库中调用 C 方法?
【发布时间】:2014-05-20 15:46:54
【问题描述】:

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

//The DLL can be downloaded at http://54.197.252.236/se/CliSiTef32I.dll

long ConfiguraIntSiTefInterativoEx(
   char* IPSiTef, 
   char* IdLoja,
   char* IdTerminal, 
   short Reservado, 
   char* ParametrosAdicionais
   )

long IniciaFuncaoSiTefInterativo(
   long Funcao, 
   char* Valor, 
   char* CupomFiscal, 
   char* DataFiscal, 
   char* HoraFiscal, 
   char* Operador, 
   char* ParamAdic
   )

我该怎么做?

【问题讨论】:

  • 如何执行此操作取决于您未提供的信息。什么是调用约定?是cdecl吗? char* 参数是什么。它们是字符串吗?什么编码? ANSI? ASCII? UTF-8?它们是输入参数吗?还是他们输出?这似乎不太可能。

标签: c# c++ c dll dllimport


【解决方案1】:

这些可能会起作用:

[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 确实是布尔值,您可以这样声明返回值。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多