Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2010, 17:33   #1
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию Загрузка плагинов

Вот я пишу для своей проги возможность создания плагинов. Саму загрузку и выполнение их я написал. Сама проблема в том, что после закрытия приложения возникает ошибка
---------------------------
Debugger Exception Notification
---------------------------
Project GameEditor.exe raised exception class EInvalidPointer with message 'Invalid pointer operation'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Вот код загрузки плагина
Код:
function LoadPlugin(dllname: string; var plugin: E_Plugin): Cardinal;
 var GetPluginInfo: E_GetPluginInfo;
     Run: E_PluginRun;
     dllhandle: THandle;
begin
 Result:= $0;
 if not FileExists('Plugins\'+dllname) then
 begin
  Result:= $1;
  exit;
 end;
 plugin.DllName:= dllname;
 DllHandle:= LoadLibrary(PChar('Plugins\'+dllname));
 if DllHandle = 0 then
 begin
  Result:= $2;
  exit;
 end;
 @GetPluginInfo:= GetProcAddress(DllHandle,'GetPluginInfo');
 @Run:= GetProcAddress(DllHandle,'PluginExecute');
 if (@GetPluginInfo = nil) or (@Run = nil) then
 begin
  FreeLibrary(dllhandle);
  Result:= $3;
  exit;
 end;
 plugin.info:= GetPluginInfo;
 @GetPluginInfo:= nil;
 @Run:= nil;
// FreeLibrary(dllhandle);
end;
Помогите исправить. Если вернуть в конце строчку FreeLibrary(dllhandle), то плагин вовсе не загружается. Выдает ошибку
---------------------------
Debugger Exception Notification
---------------------------
Project GameEditor.exe raised exception class EAccessViolation with message 'Access violation at address 00403EB0 in module 'GameEditor.exe'. Read of address 00C21E48'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
alexprey вне форума Ответить с цитированием
Старый 15.06.2010, 17:57   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

GetPluginInfo;, меня интересует заголовок этой функции, а так же описание структуры которую она возвращает.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание плагинов komp324 Общие вопросы Delphi 6 17.01.2010 19:15
создание плагинов komp324 Общие вопросы Delphi 2 28.12.2009 15:44
Поддержка плагинов Altera Общие вопросы Delphi 4 29.07.2009 18:03
Создание плагинов для Opera M_script Общие вопросы C/C++ 3 08.06.2009 16:43
Создание плагинов на DLL: SharedMemory darkstarx Общие вопросы Delphi 13 22.01.2008 22:31