Автор Тема: Dll Call и моя библиотека  (Прочитано 3487 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AnyMak [?]

  • Новичок
  • *
  • Сообщений: 18
  • Репутация: 3
    • Награды
Dll Call и моя библиотека
« Создано: Ноябрь 08, 2012, 15:28:30 »
Здравствуйте, вообщем читала на форуме, но все это мне не подходит...

На C++ есть моя функция

Код: AutoIt [Выделить]
int _Annet_GetValue( int _Idx )
{
    int Result[5] = { 1, 2, 3, 4, 5 };

    if ( _Idx > 0 && _Idx < 5 )
    {
        return Result[ 1 ];
    } else {
        return -1;
    }
}


Вообщем я хочу что бы одна и та же функция по параметру возвращала специальные значения ( за место 1,2,3,4,5 будут другие нужные мне )

Пытаюсь вызвать функцию на Autoit:

Код: AutoIt [Выделить]
func Annet_GetValue( $Idx )
   local $Result
   
   $Call = DllCall( "AnnetLib.dll", "int", "Annet_GetAddress", "int", $Idx )

   $Result = $Call[0]

   return $Result
EndFunc


Но при запуске скрипта -
И процесс всегда завершается с кодом 0xFFFFFFFFC0000005 ( 0xC0000005 )
Вроде как это нарушение прав доступа при чтении виртуального адреса

Прошу помощи, заранее Спасибо

Ах да, чуть не забыла, в экспорт пихаю вот так:

Код: AutoIt [Выделить]
Annet_GetValue = _Annet_GetValue @1337

« Последнее редактирование: Ноябрь 08, 2012, 15:51:56 от AnyMak »

Русское сообщество AutoIt

Dll Call и моя библиотека
« Отправлен: Ноябрь 08, 2012, 15:28:30 »

Оффлайн asdf8 [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 560
  • Репутация: 151
    • Награды
Re: Dll Call и моя библиотека
« Ответ #1, Отправлен: Ноябрь 08, 2012, 18:39:05 »
AnyMak  [?]
Цитировать
На C++ есть моя функция
Вопрос скорее по срр, чем по AutoIt.
По моему, при объявлении функции нужно указывать, чтобы она поддерживала stdcall.

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1535
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Dll Call и моя библиотека
« Ответ #2, Отправлен: Ноябрь 08, 2012, 20:44:34 »
Проще же написать данную функцию на AutoIt чем таскать с собой Dll.

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Dll Call и моя библиотека
« Ответ #3, Отправлен: Ноябрь 08, 2012, 21:14:58 »
AnyMak  [?]
Цитировать
На C++ есть моя функция
А чем эта, например, хуже?  :)
Код: AutoIt [Выделить]
For $i = -2 To 6
    $iRes = _Annet_GetAddress($i);(String($i))
    ConsoleWrite(StringFormat('Index:\t%d\tError:\t%d\tResult:\t%d\n', $i, @error, $iRes))
Next

Func _Annet_GetAddress($i_Index)
    Local $a_Address[5] = [Random(1, 9, 1), Random(10, 99, 1), Random(100, 999, 1), Random(1000, 9999, 1), Random(10000, 99999, 1)]

    $i_Index = Int($i_Index)
    Switch $i_Index
        Case 0 To 4;UBound($a_Address) - 1
            Return $a_Address[$i_Index]
        Case Else
            Return SetError(1, 0, -1)
    EndSwitch
EndFunc   ;==>_Annet_GetAddress


Русское сообщество AutoIt

Re: Dll Call и моя библиотека
« Ответ #3 Отправлен: Ноябрь 08, 2012, 21:14:58 »

Оффлайн AnyMak [?]

  • Новичок
  • *
  • Сообщений: 18

  • Автор темы
  • Репутация: 3
    • Награды
Re: Dll Call и моя библиотека
« Ответ #4, Отправлен: Ноябрь 08, 2012, 22:04:17 »
Да, конечно легче! И вытащат на раз два. А дллку я запакую ( лицензионный VMProtect и Themida ).
Тем более в дллке все ресурсы и некоторые функции, для привязки.
« Последнее редактирование: Ноябрь 08, 2012, 22:17:18 от AnyMak »

Оффлайн darkwhite [?]

  • Новичок
  • *
  • Сообщений: 129
  • Репутация: 4
  • Пол: Мужской
    • Награды
Re: Dll Call и моя библиотека
« Ответ #5, Отправлен: Ноябрь 09, 2012, 08:44:03 »
Я конечно не знаток в dllcall самому тоже интересно данная тема. Есть тоже одна библиотека которую хочу вызвать и она тоже ругается, хотя если вызввать ее же из delphi то работает

а по теме  почему в
Код: AutoIt [Выделить]
$Call = DllCall( "AnnetLib.dll", "int", "Annet_GetAddress", "int", $Idx )

стоит имя вызываемой функции Annet_GetAddress,
 хотя везде объявлена Annet_GetValue или я что то не так понял  :whistle:

Русское сообщество AutoIt

Re: Dll Call и моя библиотека
« Ответ #5 Отправлен: Ноябрь 09, 2012, 08:44:03 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
0 Ответов
4032 Просмотров
Последний ответ Июль 20, 2009, 18:25:09
от Medic84
2 Ответов
6998 Просмотров
Последний ответ Апрель 16, 2011, 00:41:09
от Kaster
26 Ответов
16235 Просмотров
Последний ответ Июль 28, 2017, 20:28:27
от CreatoR
5 Ответов
2357 Просмотров
Последний ответ Ноябрь 17, 2014, 19:45:47
от firex
2 Ответов
1062 Просмотров
Последний ответ Август 22, 2014, 15:30:20
от kadi
5 Ответов
2236 Просмотров
Последний ответ Сентябрь 01, 2014, 12:56:58
от Booster
0 Ответов
1347 Просмотров
Последний ответ Ноябрь 26, 2014, 00:44:42
от Sinner
15 Ответов
1886 Просмотров
Последний ответ Март 15, 2017, 22:04:54
от joiner
2 Ответов
346 Просмотров
Последний ответ Апрель 24, 2018, 08:14:39
от ra4o
2 Ответов
225 Просмотров
Последний ответ Июль 16, 2018, 16:00:41
от kapiton