作者DrStein (交換關聯)
看板C_and_CPP
標題[問題] 請問linux中有沒有類似windows的DllMain的東西
時間Thu Jun 10 11:02:30 2010
就是小弟要把個東西移動到linux,window下程式原是這樣:
BOOL dllStatus = TRUE;
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
dllStatus = Init();
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}/*switch ul_reason_for_call*/
return dllStatus;
}/*DllMain*/
在BOOL Init(void)中會做些硬體支持度的判斷,不過關就return FALSE
讓外面加載這dll的程式loading失敗。
那請問在GCC下,有沒有類似DLLmain的東西哩?
讓加載.so檔時可以在上面做些判斷,不過關就讓加載失敗。
謝謝,感恩啊。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.158.204
推 clanguage:dlopen dlsym 這不知道是不是你要的 @@? 06/10 11:14
→ DrStein:dlopen不是等同於loadlibrary嗎? 06/10 11:41
→ DrStein:我是講被加載的so,有沒有辦法在被加載時做些判斷。 06/10 11:41
→ DrStein:不過關就讓外面加載失敗。 06/10 11:42
推 aecho:這應該和__attribute__((constructor)) 06/10 12:53
→ aecho:__attribute__((destructor)) 有關吧 06/10 12:54
→ DrStein:剛查了一些文,那請問要怎樣讓他加載失敗呢? 06/10 13:49
→ DrStein:int __attribute__ ((constructor)) my_init(void) 06/10 13:51
→ DrStein:只要讓他return 0就會加載失敗了嗎? 06/10 13:51
→ DrStein:試的結果不行。。不能用單純的return 0讓外面失敗 06/10 15:30
→ DrStein:那請問要怎做才會讓外面加載失敗呢? 06/10 15:31