Vlad2 Опубликовано 25 июня, 2014 Поделиться Опубликовано 25 июня, 2014 Всем привет!Помогите разобраться.У меня есть dll, в ней есть функция GetHandle, мне нужно подключить dll и вызвать эту функцию в СЕ, чтоб та вернула мне параметр.Делал так:mydll = require("gethandel")Handele = mydll:GetHandle()showMessage(Handele)Не получается. Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 17 октября, 2014 Автор Поделиться Опубликовано 17 октября, 2014 Проблемма актуальна! Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 17 октября, 2014 Поделиться Опубликовано 17 октября, 2014 А это не пробовал?http://lua-users.org/wiki/LoadLibrary Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость undefo Опубликовано 21 октября, 2014 Поделиться Опубликовано 21 октября, 2014 Всем привет!Помогите разобраться.У меня есть dll, в ней есть функция GetHandle, мне нужно подключить dll и вызвать эту функцию в СЕ, чтоб та вернула мне параметр.Делал так:mydll = require("gethandel")Handele = mydll:GetHandle()showMessage(Handele)Не получается. Handle написан 3 раза и 3 раза по-разному. Уверен, что здесь нигде ошибка не закралась? Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 23 октября, 2014 Поделиться Опубликовано 23 октября, 2014 Поговорил с одним человеком и получилось сделать подключение своей дллки. Использовал Codeblocks, компилятор MinGW. Библиотека собрана для 64-битной версии CE, можно для 32. Внутри архива .dll, .h и .cpp. Реализовал одну функцию printString, выводящую в messagebox'е переданную ей строку.Для подключения к скрипту CE нужно написать следующее:printString = package.loadlib("D:\\load_my_Lib64.dll", "printString") --загрузка функции из библиотекиprintString("123") --вызов для строкиprintString(123)--вызов для числаПуть написал для примера, главное ставить \\ в пути. Версия CE 6.4. Главное чтобы в корне были библиотеки луа 5.1 Пароль от архива: gamehacklab.ru Будет больше времени и интерес к теме напишу подробнее.DLLka+CPPH.rar 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 23 октября, 2014 Поделиться Опубликовано 23 октября, 2014 Поговорил с одним человеком и получилось сделать подключение своей дллки. Использовал Codeblocks, компилятор MinGW. Библиотека собрана для 64-битной версии CE, можно для 32. Внутри архива .dll, .h и .cpp. Реализовал одну функцию printString, выводящую в messagebox'е переданную ей строку.Для подключения к скрипту CE нужно написать следующее:printString = package.loadlib("D:\\load_my_Lib64.dll", "printString") --загрузка функции из библиотекиprintString("123") --вызов для строкиprintString(123)--вызов для числаПуть написал для примера, главное ставить \\ в пути. Версия CE 6.4. Главное чтобы в корне были библиотеки луа 5.1 Пароль от архива: gamehacklab.ru Будет больше времени и интерес к теме напишу подробнее.Ты издеваешься что ли сейчас? Ты мой пост в этой теме читал вообще? Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 24 октября, 2014 Автор Поделиться Опубликовано 24 октября, 2014 Coder, A1t0r, Спасибо. С функцией вызова dllки разобрался, но вот возникла проблемма с написанием dllлок на Delphi.library Project2; uses SysUtils, Classes; {$R *.res} function Symma(a,b:integer):Integer;stdcall;begin Result :=a+b;end; exports Symma; beginend.Вот код dllки, функция вычисляет сумму 2 чисел, передаваемых ей и возвращает результат. Использование в СЕ.Symma = package.loadlib("D:\\Program Files (x86)\\Cheat Engine 6.4\\Project2.dll", "Symma")res = Symma(1, 2)print(res)Программа сообщает о неопределенной ошибке. Поясните, что нетак! Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 24 октября, 2014 Поделиться Опубликовано 24 октября, 2014 Ты издеваешься что ли сейчас? Ты мой пост в этой теме читал вообще? Естественно, но только этого недостаточно. Нужно ещё уметь работать со стеком луа. Простые вызовы сишных функций ни к чему не приведут, ну разве что к ошибке. Сразу видно, даже не заглядывал в программу. Что-то по той ссылке нету примера с передачей параметра в функцию. Без состояния стека можно только вызывать отдельные функции MessageBox, например, таким образом никак не получит извне строку для вывода.Программа сообщает о неопределенной ошибке. Поясните, что нетак! Текст неопределённой ошибки можно увидеть? Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 25 октября, 2014 Поделиться Опубликовано 25 октября, 2014 Естественно, но только этого недостаточно. Нужно ещё уметь работать со стеком луа. Простые вызовы сишных функций ни к чему не приведут, ну разве что к ошибке. Сразу видно, даже не заглядывал в программу. Что-то по той ссылке нету примера с передачей параметра в функцию. Без состояния стека можно только вызывать отдельные функции MessageBox, например, таким образом никак не получит извне строку для вывода.Что-то больно подозрительные слова. LUA написан Си, а стало быть вызвать функции из сишной длл-ки 100% можно осуществить без каких либо проблем. Хочешь сказать, что функцию, объявленную так - extern "C" __declspec(dllexport) не получится вызвать? Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 25 октября, 2014 Автор Поделиться Опубликовано 25 октября, 2014 Текст неопределённой ошибки можно увидеть? Тык Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 25 октября, 2014 Поделиться Опубликовано 25 октября, 2014 Тык Ну вот как-то так: Попробуй. Складываться должны даже вещественные числа, но точность местами оставляет желать лучшего)Project2.rar Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 25 октября, 2014 Автор Поделиться Опубликовано 25 октября, 2014 Во! Работает на 64-битной версии CE, а на 32 - нет.Нужен способ реализации такой dllки на Delphi, исходник в студию)) Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 25 октября, 2014 Поделиться Опубликовано 25 октября, 2014 Во! Работает на 64-битной версии CE, а на 32 - нет.Нужен способ реализации такой dllки на Delphi, исходник в студию)) Извиняйте пишу на C. Для 32-битной версии нужно при сборке подключать 32x версию.main.cpp:main.h: Но нужен ещё файл для импорта библиотеки lua5.1-32 или lua5.1-64 (.a для gcc, .lib для C компиляторов). Библиотеку нужно собирать из исходников луа соответствующей версии.#include "main.h"#include <lua.hpp>int DLL_EXPORT Symma(lua_State* L){ if (lua_gettop(L)>0) { if (lua_isnumber(L, 1) && lua_isnumber(L, 2)) { const float a = lua_tonumber(L, 1); const float b = lua_tonumber(L, 2); lua_pushnumber (L, lua_Number(a+); return 1; } else MessageBoxA(0, "Not number!", "DLL Message", MB_OK | MB_ICONINFORMATION); } else MessageBoxA(0, "No arguments!", "DLL Message", MB_OK | MB_ICONINFORMATION); return 0;}extern "C" BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved){ return TRUE;}#ifndef __MAIN_H__#define __MAIN_H__#include <windows.h>#include <lua.hpp>#ifdef BUILD_DLL #define DLL_EXPORT __declspec(dllexport)#else #define DLL_EXPORT __declspec(dllimport)#endif#ifdef __cplusplusextern "C"{#endifint DLL_EXPORT Symma(lua_State* L);#ifdef __cplusplus}#endif#endif // __MAIN_H__ Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 25 октября, 2014 Автор Поделиться Опубликовано 25 октября, 2014 Ах жаль((Мнеб серийник жесткого диска запрашивать, да пару методов шифрования использовать. Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 25 октября, 2014 Поделиться Опубликовано 25 октября, 2014 Ах жаль((Мнеб серийник жесткого диска запрашивать, да пару методов шифрования использовать. Есть реализация lua для delphi. нужно только найти справочник АПИ. А лучше зайди сюда Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 26 октября, 2014 Автор Поделиться Опубликовано 26 октября, 2014 A1t0r, вот.Что-то нашел, но пока нет времени разбираться.delphi_extras.zipcrystal_lua.zip Ссылка на комментарий Поделиться на другие сайты Поделиться
A1t0r Опубликовано 26 октября, 2014 Поделиться Опубликовано 26 октября, 2014 A1t0r, вот.Что-то нашел, но пока нет времени разбираться. Если нужно создавать библиотеки для вставки их в CE, то подобные приблуды от сторонних разработчиков не подойдут. Необходимо собрать динамическую библиотеку из исходников lua версии 5.1, и использовать для своей получившийся файл .lib, как я уже писал в 13 посте. Если всё сделано правильно, то можно сделать файл .def в котором должны будут написаны экспортируемые функции. Скачай обычные исходники вместе с примерами, пройдя по ссылке выше(в конце статьи ссылка на Lua_1Step.rar). В файле lua.pas найдёшь апишные функции, а описание их можно читать на сайте lua.org (инглиш, что поделаешь) или lua.ru (русский). 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения