Как я могу вызвать метод C из библиотеки в моем коде C #?

0

У меня есть DLL (CliSiTef32I.dll), и мне нужно вызвать следующие методы на моем С# -коде:

//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
   )

Как я могу это сделать?

  • 3
    Посмотрите P / Invoke.
  • 0
    Как это сделать, зависит от информации, которую вы не предоставили. Что такое соглашение о вызовах? Это cdecl ? И каковы параметры char* . Это струны? Какая кодировка? ANSI? ASCII? UTF-8? Это входные параметры? Или они выходной? Что кажется маловероятным.
Теги:
dll
dllimport

1 ответ

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-битная подпись int, это будет работать.

Кроме того, если 32-битный int, который вы возвращаете, действительно является bool, вы можете объявить возвращаемое значение как таковое.

  • 0
    почему вы используете byte [] вместо char []?
  • 0
    @Felipe Потому что c # char не 16-битный в отличие от c char, который 8-битный.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню