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

Ваш аккаунт

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

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

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

LoadLibrary and run-time linking

Аноним
Последовательность действий:
создаю указатель на функцию, допустим MessageBoxA
и переменную модуля,загружаю dll содержащую эту функцию, определяю адрес функции, вызываю функцию и освобождаю dll. Проблема: при вызове функции таким способом программа вылетает. Как я понял проблеммы со стеком после того как функция отработает и программа передаст управление системе (ret 10). MessageBoxA взял для примера на самом деле вызываю диалог открытия файла - ordinal 63 from shell32.dll. Самое интересное, что в VB туже функцию вызываю через Declare... и все работает ok. И такие проблемы только с системными библиотеками(догадываюсь, что может быть как-то это связано с TLS). Ну вообщем помогите идиоту, please.
Greate thanks in advance.

---=== code sample ===---
int ( *msgbox)(HWND,LPCTSTR,LPCSTR,UINT);
HINSTANCE hMdl;
hMdl=LoadLibrary("user32.dll");
msgbox=(int (*)(HWND,LPCTSTR,LPCTSTR,UINT)) GetProcAddress(hMdl,(const char*)429);
msgbox(hwnd,"yes","oo",MB_OK);
FreeLibrary(hMdl);
Аноним
<TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD>Quote<HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
On 2001-07-27 2056, Anonymous wrote
Последовательность действий
создаю указатель на функцию, допустим MessageBoxA
и переменную модуля,загружаю dll содержащую эту функцию, определяю адрес функции, вызываю функцию и освобождаю dll. Проблема при вызове функции таким способом программа вылетает. Как я понял проблеммы со стеком после того как функция отработает и программа передаст управление системе (ret 10). MessageBoxA взял для примера на самом деле вызываю диалог открытия файла - ordinal 63 from shell32.dll. Самое интересное, что в VB туже функцию вызываю через Declare... и все работает ok. И такие проблемы только с системными библиотеками(догадываюсь, что может быть как-то это связано с TLS). Ну вообщем помогите идиоту, please.
Greate thanks in advance.

---=== code sample ===---
int ( *msgbox)(HWND,LPCTSTR,LPCSTR,UINT);
HINSTANCE hMdl;
hMdl=LoadLibrary(&quot;user32.dll&quot;);
msgbox=(int (*)(HWND,LPCTSTR,LPCTSTR,UINT)) GetProcAddress(hMdl,(const char*)429);
msgbox(hwnd,&quot;yes&quot;,&quot;oo&quot;,MB_OK);
FreeLibrary(hMdl);

</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>

Hi !!

Думаю AfxMessageBox(...); проще

http//www.development.efficientit.com
Аноним
<TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD>Quote:<HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
On 2001-07-27 20:56, Anonymous wrote:
Последовательность действий:
создаю указатель на функцию, допустим MessageBoxA
и переменную модуля,загружаю dll содержащую эту функцию, определяю адрес функции, вызываю функцию и освобождаю dll. Проблема: при вызове функции таким способом программа вылетает. Как я понял проблеммы со стеком после того как функция отработает и программа передаст управление системе (ret 10). MessageBoxA взял для примера на самом деле вызываю диалог открытия файла - ordinal 63 from shell32.dll. Самое интересное, что в VB туже функцию вызываю через Declare... и все работает ok. И такие проблемы только с системными библиотеками(догадываюсь, что может быть как-то это связано с TLS). Ну вообщем помогите идиоту, please.
Greate thanks in advance.

---=== code sample ===---
int ( *msgbox)(HWND,LPCTSTR,LPCSTR,UINT);
HINSTANCE hMdl;
hMdl=LoadLibrary(&quot;user32.dll&quot;);
msgbox=(int (*)(HWND,LPCTSTR,LPCTSTR,UINT)) GetProcAddress(hMdl,(const char*)429);
msgbox(hwnd,&quot;yes&quot;,&quot;oo&quot;,MB_OK);
FreeLibrary(hMdl);

--- для Mfc похожая проблема --
Надо так делать:
HANDLE hOld = AfxGetResourceHandle();
AfxSetResouceHandle(AfxGetModuleHandle());
CDialog dlg(IDD_DIALOG1);
dlg.DoModal();
AfxSetResourceHandle(hOld);

</BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE>
624
27 сентября 2001 года
HollyBlood
44 / / 20.06.2000
Попробуй сделать прототип функции с параметром _stdcall...
может помочь...

Кстати, а диалог нормально отрабатывает?

Holly

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

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