Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как динамически загрузить Dll?

4.5K
06 июля 2005 года
protz
34 / / 18.12.2004
Я почему-то никак не могу динамически подгрузить к проге делку и выполнить имеющуюся в ней функцию. Объясняю суть пробллемы.
имеется делка:
extern "C" __declspec(dllexport) void function()
{
MessageBox(NULL, "Function was executed!", NULL, MB_OK);
}
Сама делка скомпилилась нормально, к этому претензий никаких. Однако имеется консольное приложение, которое должно эту делку вызывать:
//---------------------------------------------------------------------------
#include <windows.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
void(*p)();
p=&GetProcAddress(LoadLibrary("dll_module.dll"), "function");//на эту строчку кода ругается Билдер
(*p)();
return 0;
}
//---------------------------------------------------------------------------
Когда я пытаюсь скомпилить это самое консольное приложение, Билдер ругается вот таким трёхэтажным матом:

[C++ Error] main_unit.cpp(11): E2027 Must take address of a memory location

Как такое понимать и что с этим можно сделать? Очень надеюсь на вашу помощь!

Заранее спасибо!
259
06 июля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by protz
Я почему-то никак не могу динамически подгрузить к проге делку и выполнить имеющуюся в ней функцию. Объясняю суть пробллемы.
имеется делка:
extern "C" __declspec(dllexport) void function()
{
MessageBox(NULL, "Function was executed!", NULL, MB_OK);
}
Сама делка скомпилилась нормально, к этому претензий никаких. Однако имеется консольное приложение, которое должно эту делку вызывать:
//---------------------------------------------------------------------------
#include <windows.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
void(*p)();
p=&GetProcAddress(LoadLibrary("dll_module.dll"), "function");//на эту строчку кода ругается Билдер
(*p)();
return 0;
}
//---------------------------------------------------------------------------
Когда я пытаюсь скомпилить это самое консольное приложение, Билдер ругается вот таким трёхэтажным матом:

[C++ Error] main_unit.cpp(11): E2027 Must take address of a memory location

Как такое понимать и что с этим можно сделать? Очень надеюсь на вашу помощь!

Заранее спасибо!


Вот пример проекта с динамическим dll

6.3K
06 июля 2005 года
xTrim
38 / / 11.06.2004
Цитата:
Originally posted by protz

void(*p)();
p=&GetProcAddress(LoadLibrary("dll_module.dll"), "function");//на эту строчку кода ругается Билдер
(*p)();
return 0;



этот кусок переписать примерно вот так:

typedef void __stdcall(*P)();
P p=(P)GetProcAddress(LoadLibrary("dll_module.dll"),"_function");
if(!p) return 1;
p();
return 0;

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог