Как правильно добавить функцию в XSTools.dl (не работает)

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

Модератор: 4epT

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Аватара пользователя
[BMP]
Энтузиаст
Сообщения: 90
Зарегистрирован: Чт дек 25, 2008 5:26 pm
Сервер RO:: zenyro.ru
Откуда: Киев
Контактная информация:

Как правильно добавить функцию в XSTools.dl (не работает)

Сообщение [BMP] »

Решил я поиграться немного с XSTools.dll. Хочу добавить туда несколько своих функций.
Вот все шаги, которые я выполняю для достижения этой цели:

1. в файлик src\auto\XSTools\win32\utils.cpp добавляю свою функцию:

Код: Выделить всё

int TestMe(int i)
{
	int k = i + 1;
	return k;
}
2. в файлик src\auto\XSTools\win32\utils.h добавляю описание функции:

Код: Выделить всё

/**
 * This is test function
 *
 * @param i Just some number.
 * @return Incremented number.
 */
int TestMe(int i);
3. в файлик src\auto\XSTools\win32\wrapper.xs добавляю следующее:

Код: Выделить всё

int
TestMe(i)
	int i
4. компилирую все это дело:

Код: Выделить всё

python scons.py
Все проходит великолепно. И после этого в списке экспортируемых функций появляется моя функция.
Все бы хорошо, НО: при попытке вызова этой функции:

Код: Выделить всё

use Utils::Win32;
.....
print Utils::Win32::TestMe(1);
когда я запускаю бота, то получаю окошко, со следующей ошибкой:

Код: Выделить всё

Плагин не может быть загружен из-за проблемы в нем. Пожалуйста, сообщите автору плагина, или удалите плагин, тогда OpenKore сможет запуститься.

Сообщение об ошибке:
Плагин содержит синтаксическую ошибку:
Undefined subroutine &Utils::Win32::TestMe called at D:/KORE/plugins/test.pl line 18.
В чем может быть проблема? Посоветуйте решение плз.
Изображение
Изображение
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: Как правильно добавить функцию в XSTools.dl (не работает)

Сообщение EternalHarvest »

Использует ли кора скомпилированную dll? Могла остаться копия старой где-нибудь.
Аватара пользователя
[BMP]
Энтузиаст
Сообщения: 90
Зарегистрирован: Чт дек 25, 2008 5:26 pm
Сервер RO:: zenyro.ru
Откуда: Киев
Контактная информация:

Re: Как правильно добавить функцию в XSTools.dl (не работает)

Сообщение [BMP] »

EternalHarvest писал(а):Использует ли кора скомпилированную dll? Могла остаться копия старой где-нибудь.
Да... Вы правы... копия осталась в C:/Temp/pdk-user. Но после удаления этой папки - в ней всеравно появляется XSTools.dll и NetRedirect.dll, но без моих изменений (
Изображение
Изображение
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: Как правильно добавить функцию в XSTools.dl (не работает)

Сообщение EternalHarvest »

Хм, эти файлы тоже упакованы в start.exe что ли?

Попробуй запускать openkore.pl вместо него, если установлен Perl.
Аватара пользователя
[BMP]
Энтузиаст
Сообщения: 90
Зарегистрирован: Чт дек 25, 2008 5:26 pm
Сервер RO:: zenyro.ru
Откуда: Киев
Контактная информация:

Re: Как правильно добавить функцию в XSTools.dl (не работает)

Сообщение [BMP] »

EternalHarvest писал(а):Хм, эти файлы тоже упакованы в start.exe что ли?

Попробуй запускать openkore.pl вместо него, если установлен Perl.
Попробовал. Не запустилось. Говорит что не может загрузить модуль Win32/Console.pm

Код: Выделить всё

OpenKore version what-will-become-2.1
SVN revision: 7413
No loaded plugins.

Error message:
Can't locate Win32/Console.pm in @INC at src/Interface/Console/Win32.pm line 37.
BEGIN failed--compilation aborted at src/Interface/Console/Win32.pm line 37.
Compilation failed in require at (eval 70) line 2.
BEGIN failed--compilation aborted at (eval 70) line 2.

Stack trace:
Can't locate Win32/Console.pm in @INC at src/Interface/Console/Win32.pm line 37.
BEGIN failed--compilation aborted at src/Interface/Console/Win32.pm line 37.
Compilation failed in require at (eval 70) line 2.
BEGIN failed--compilation aborted at (eval 70) line 2.
 at src/Interface/Console.pm line 53
	Interface::Console::new('Interface::Console') called at src/Interface.pm line 61
	Interface::loadInterface('Interface', 'Console') called at openkore.pl line 44
	main::__start() called at openkore.pl line 187
Изображение
Изображение
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: Как правильно добавить функцию в XSTools.dl (не работает)

Сообщение EternalHarvest »

Какой это Perl?

Нужен модуль Win32::Console из CPAN, видимо.
Аватара пользователя
[BMP]
Энтузиаст
Сообщения: 90
Зарегистрирован: Чт дек 25, 2008 5:26 pm
Сервер RO:: zenyro.ru
Откуда: Киев
Контактная информация:

Re: Как правильно добавить функцию в XSTools.dl (не работает)

Сообщение [BMP] »

EternalHarvest писал(а):Какой это Perl?

Нужен модуль Win32::Console из CPAN, видимо.
Это был StrawberryPerl. Поставил ActivePerl - все заработало)) и моя функция тоже )))

А теперь вопрос: как самому скомпилить start.exe и wxstart.exe чтобы там не было стандартных длл?
Изображение
Изображение
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: Как правильно добавить функцию в XSTools.dl (не работает)

Сообщение EternalHarvest »

Непонятно, откуда она там вообще взялась (вроде всегда требовалась отдельно).

start.exe компилируется из start.pl, вроде бы с помощью perlapp. Не в курсе подробностей.
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Re: Как правильно добавить функцию в XSTools.dl (не работает)

Сообщение kLabMouse »

[BMP]
Тебе нужно PDK к ActivePerl, батники для сборки находятся в комплекте сорсов.
И не забывай, что скрутит всё только если есть лицензия на PDK.
Аватара пользователя
[BMP]
Энтузиаст
Сообщения: 90
Зарегистрирован: Чт дек 25, 2008 5:26 pm
Сервер RO:: zenyro.ru
Откуда: Киев
Контактная информация:

Re: Как правильно добавить функцию в XSTools.dl (не работает)

Сообщение [BMP] »

kLabMouse писал(а):[BMP]
Тебе нужно PDK к ActivePerl, батники для сборки находятся в комплекте сорсов.
И не забывай, что скрутит всё только если есть лицензия на PDK.
Ок. Спасибо. Буду пробовать
Изображение
Изображение
Ответить