![](https://forum.armkb.com/images/enlighten/misc/cat_top_ls.gif) |
problem with dll |
![](https://forum.armkb.com/images/enlighten/misc/cat_top_rs.gif) |
06.06.2002, 18:05
|
#1
|
Младенец
Join Date: 09 2001
Location: Armenia, Yerevan
Posts: 5
Rep Power: 0
|
problem with dll
est' znachit vot takaya programma:
[CODE]#include <stdio.h>
#include <windows.h>
int main(){
HINSTANCE urldll;
int (WINAPI* offline)();
( urldll=LoadLibrary("URL.DLL" ![Wink](https://forum.armkb.com/images/smilies/wink.gif) )
|
|
|
06.06.2002, 18:09
|
#2
|
»
Join Date: 01 2002
Posts: 777
Rep Power: 0
|
pochemu eto ya "unregistered" i vidna tol'ko polovina post-a ?
|
|
|
06.06.2002, 18:10
|
#3
|
Младенец
Join Date: 09 2001
Location: Armenia, Yerevan
Posts: 5
Rep Power: 0
|
eshe raz:
est' znachit vot takaya programma:
[CODE]#include <stdio.h>
#include <windows.h>
int main(){
HINSTANCE urldll;
int (WINAPI* offline)();
( urldll=LoadLibrary("URL.DLL" ![Wink](https://forum.armkb.com/images/smilies/wink.gif) )
|
|
|
06.06.2002, 18:11
|
#4
|
»
Join Date: 01 2002
Posts: 777
Rep Power: 0
|
|
|
|
06.06.2002, 18:23
|
#5
|
»
Join Date: 01 2002
Posts: 777
Rep Power: 0
|
v obshem vot programma:
#include <stdio.h>
#include <windows.h>
int main(){
HINSTANCE urldll;
int (WINAPI* offline)();
( urldll=LoadLibrary("URL.DLL") ) || printf("cannot load library, error %u",GetLastError());
( offline=GetProcAddress(urldll,"InetIsOffline") ) || printf("cannot import func");
printf("%s",offline()?"offline":"online");
FreeLibrary(urldll);
//exit(0);
return 0;
}
esli raskommentirovat' stroku s exit-om to programma visnet(performed an illegal operation)
v chem problema ?
P.S. esli pomestit' tut v ubb tag CODE || proisxodit chto-to neponyatnoe
|
|
|
06.06.2002, 18:46
|
#6
|
Студент
Join Date: 01 2002
Location: Yerevan, Armenia
Age: 44
Posts: 282
Rep Power: 0
|
2 z0mbie
vrode v kode vse ok, no u menya k tebe voprosi:
1. ti poproboval vizvat' functiyu
InetIsOffline ? Kakay reaktsiya?
2. prover', chto vozvraschaet FreeLibrary?
mojet nol'?
3. zachem tebe nujno vizivat' exit(0)?
i poslednee,
4. v chem tsel' progi?
P.S. mojet bit' problema v samoi dll.
____________________
Volka nogi kormyat
__________________
Сколько времени и сил должен потратить мужчина,
Чтобы воспользоваться минутной слабостью женщины
|
|
|
06.06.2002, 18:52
|
#7
|
»
Join Date: 01 2002
Posts: 777
Rep Power: 0
|
Quote:
Originally posted by Talex:
2 z0mbie
vrode v kode vse ok, no u menya k tebe voprosi:
1. ti poproboval vizvat' functiyu
InetIsOffline ? Kakay reaktsiya?
2. zachem teb nujen exit(0)?
3. prover', chto vozvraschet FreeLibrary?
i poslednee, v chem tsel'?
|
1. ya eyo i vыzыvayu(sm. vыshe) normal'no rabotaet
2. ne nuzhen, prosto xotel proverit' gde oshibka voznikaet :]
3.TRUE
cel' v tom chtob uznat' online ya ili offline
DLL iz komplekta windows..
|
|
|
![](https://forum.armkb.com/images/enlighten/misc/cat_top_ls.gif) |
|
![](https://forum.armkb.com/images/enlighten/misc/cat_top_rs.gif) |
06.06.2002, 23:24
|
#8
|
Бакалавр
Join Date: 03 2002
Location: Detroit, MI, USA
Posts: 482
Rep Power: 0
|
Quote:
Originally posted by z0mbie:
v obshem vot programma:
#include <stdio.h>
#include <windows.h>
int main(){
HINSTANCE urldll;
int (WINAPI* offline)();
( urldll=LoadLibrary("URL.DLL") ) || printf("cannot load library, error %u",GetLastError());
( offline=GetProcAddress(urldll,"InetIsOffline") ) || printf("cannot import func");
printf("%s",offline()?"offline":"online");
FreeLibrary(urldll);
//exit(0);
return 0;
}
esli raskommentirovat' stroku s exit-om to programma visnet(performed an illegal operation)
v chem problema ?
P.S. esli pomestit' tut v ubb tag CODE || proisxodit chto-to neponyatnoe
|
Pomoemu, u tebya problema s nepravil'noj signaturoj funkcii. Soglasno MSDN - u funciya vyglyadit tak:
BOOL InetIsOffline(DWORD dwFlags);
T.e., skoree vsego, u tebya razbalansirovalsya stek, poetomu, oshibka vsplyvaet pozje.
Poprobyj pomenyat' signaturu v svoem sample, i peredat' ej dwFlags = 0.
Udachi,
Hovik
|
|
|
![](https://forum.armkb.com/images/enlighten/misc/trans.gif) |
07.06.2002, 01:16
|
#9
|
Академик
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
|
попробуй воспользоваться "FreeLibraryAndExitThread" вместо
"FreeLibrary".
Возможно вопрос в наличии child-тредов у DLL-ки, которые освобождаются некорректно.
Проявляется же это скорее всего именно после завершения функции.
Разница же в том (IMHO), что "return()" обрабатывает ошибки тихо, являясь "надстроечной" над стандартной (библиотечная ) функцией выхода "exiт".
|
|
|
07.06.2002, 02:55
|
#10
|
»
Join Date: 01 2002
Posts: 777
Rep Power: 0
|
Tumanyan ya tozhe dumal chto signatura nepravil'naya no pri obyavlenii BOOL InetIsOffline(DWORD dwFlags); poluchayu error:
Cannot convert 'int (__stdcall *)()' to 'int (__stdcall *)(unsigned long)' in function main()
Greco El: spasibo, poluchilos' :]
|
|
|
07.06.2002, 03:12
|
#11
|
The Reloaded
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
|
Quote:
Originally posted by z0mbie:
pri obyavlenii BOOL InetIsOffline(DWORD dwFlags); poluchayu error:
Cannot convert 'int (__stdcall *)()' to 'int (__stdcall *)(unsigned long)' in function main()
|
ну так надо явно приводить один указатель к другому
|
|
|
07.06.2002, 03:22
|
#12
|
»
Join Date: 01 2002
Posts: 777
Rep Power: 0
|
da kstati ya tam naoborot napisal, visnet pri vыxode return-om
Aram H. chto tut k chemu privodit' ne ponyal ?
|
|
|
07.06.2002, 04:46
|
#13
|
The Reloaded
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
|
Quote:
Originally posted by z0mbie:
Aram H. chto tut k chemu privodit' ne ponyal ?
|
значение, возвращаемое функцией GetProcAddress, привести к нужному типу, и завершить присваивание:
Code:
int (WINAPI* offline)(DWORD);
offline = (int (WINAPI*)(DWORD)) GetProcAddress(urldll,"InetIsOffline");
или, если так не сработает (хотя должно вроде), можно пойти через typedef:
Code:
typedef int (WINAPI*)(DWORD) OfflineFunc;
OfflineFunc offline = (OfflineFunc) GetProcAddress(urldll,"InetIsOffline");
|
|
|
07.06.2002, 12:59
|
#14
|
»
Join Date: 01 2002
Posts: 777
Rep Power: 0
|
ok Aram pasiba :]
tol'ko ne
typedef int (WINAPI*)(DWORD) OfflineFunc;
a
typedef int (WINAPI* OfflineFunc)(DWORD);
|
|
|
07.06.2002, 14:44
|
#15
|
The Reloaded
Join Date: 01 2002
Location: behind the flesh and gelatinе of soft dull eyes
Posts: 3,387
Rep Power: 5
|
Quote:
Originally posted by z0mbie:
ok Aram pasiba :]
tol'ko ne
typedef int (WINAPI*)(DWORD) OfflineFunc;
a
typedef int (WINAPI* OfflineFunc)(DWORD);
|
упс ![Smilie](https://forum.armkb.com/images/smilies/smile.gif) совершенно верно
|
|
|
All times are GMT. The time now is 18:42. |
|
|