3 / 3 / 0
Регистрация: 16.08.2013
Сообщений: 44
1

Разные результаты работы при обычном запуске и при дебаге (использование dll)

08.01.2015, 13:21. Показов 786. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть dll, в ней есть процедура и функция, которые мне надо использовать procedure SetStr(aStr : PChar) stdcall; external 'DLLTest.dll'; и function GetBufLen : integer; stdcall; external 'DLLTest.dll'

Значит в первую передаем просто строку, оно там ее куда-то сохраняет, потом вызываем вторую и забираем какое-то значение, которое было посчитано по переданной строке. Писала dll не я, что там происходит - не знаю))

Пишу скрипт:

Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
use Win32::API;
 
my $firstRow='aa';
my  $function = Win32::API->new(
      'DLLTest.dll', 'SetStr','P'
  );
 my $return = $function->Call($firstRow);
 
 
  Win32::API->Import('DLLTest.dll', "int GetBufLen()");
 my   $length = GetBufLen();
 
  say "length: $length";
запускаю... выдает всегда 18, какую бы строку не передавала. Ну ладно, взяла от отчаяния решила продебажить.... и магия... ответ 6... всегда 6 какую бы переменную ни передала...

что за мистика, мне кто-нибудь может хотя бы намекнуть?)
Может быть я неправильно строку передаю или неправильно забираю длину?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2015, 13:21
Ответы с готовыми решениями:

Почему программа выдает одинаковые значения при обычном запуске и разные при пошаговом выполнении?
почему когда компилирую программу, в двух массивах значения всегда одинаковые... Однако, если...

Программа выдает разные результаты при присваивании значения переменной в коде и при вводе с клавиатуры
Просто вопрос. У меня программа выдает разные результаты при присваивании значения переменной в...

При запуске windows 7 начинает устанавливать разные программы и кидать на разные сайты
На домашнем ПКначал после запуска сам по себе устанавливать всякие программы ( амиго, sound,...

При запуске windows 7 начинает устанавливать разные программы и кидать на разные сайты
Здравствуйте ! Ноутбук начал после запуска сам по себе устанавливать всякие программы ( амиго,...

1
5981 / 1990 / 323
Регистрация: 10.12.2013
Сообщений: 6,854
08.01.2015, 19:05 2
безотносительно конкретно этого вызова и
безотносительно того, что я написал ранее,
я бы начал с того, что
первое: проводил эксперименты на ActiveState, а не Strawberry Perl
и второе: сам автор советует использовать Win32::API:More
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#### Method 1: with prototype
 
  use Win32::API;
  $function = Win32::API::More->new(
      'mydll', 'int sum_integers(int a, int b)'
  );
  #### $^E is non-Cygwin only
  die "Error: $^E" if ! $function;
  #### or on Cygwin and non-Cygwin
  die "Error: ".(Win32::FormatMessage(Win32::GetLastError())) if ! $function;
  ####
  $return = $function->Call(3, 2);
 
  #### Method 2: with prototype and your function pointer
 
  use Win32::API;
  $function = Win32::API::More->new(
      undef, 38123456, 'int name_ignored(int a, int b)'
  );
  die "Error: $^E" if ! $function; #$^E is non-Cygwin only
  $return = $function->Call(3, 2);
 
  #### Method 3: with parameter list 
  
  use Win32::API;
  $function = Win32::API::More->new(
      'mydll', 'sum_integers', 'II', 'I'
  );
  die "Error: $^E" if ! $function; #$^E is non-Cygwin only
  $return = $function->Call(3, 2);
     
  #### Method 4: with parameter list and your function pointer
  
  use Win32::API;
  $function = Win32::API::More->new(
      undef, 38123456, 'name_ignored', 'II', 'I'
  );
  die "Error: $^E" if ! $function; #$^E is non-Cygwin only
  $return = $function->Call(3, 2);
  
  #### Method 5: with Import (slightly faster than ->Call)
 
  use Win32::API;
  $function = Win32::API::More->Import(
      'mydll', 'int sum_integers(int a, int b)'
  );
  die "Error: $^E" if ! $function; #$^E is non-Cygwin only
  $return = sum_integers(3, 2);
0
08.01.2015, 19:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2015, 19:05
Помогаю со студенческими работами здесь

При запуске windows 7 начинает устанавливать разные программы и кидать на разные сайты
Здравствуйте ! Скачал Word с сайта , начал установку но вместо него установилось масса разных...

При запуске в обычном режиме Windows 10 открывается CMD и завершает работу ПК
При запуске в обычном режиме Windows 10 открывается CMD и завершает работу ПК. Помогите пожалуйста.

При чтении dll библиотеки в обычном(не бинарном) виде, чтение прерывается на NULL
Задача такая: открыть dll файл(не мой) в обычном текстовом виде(каким его могут открыть обычные...

Разные результаты при Фурье преобразовании
Всем добрый день. Обнаружил разные результаты после Фурье преобразования, хотелось бы узнать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru