[問題] 請問linux中有沒有類似windows的DllMain的東西

看板C_and_CPP作者 (交換關聯)時間15年前 (2010/06/10 03:02), 編輯推噓3(309)
留言12則, 4人參與, 最新討論串1/1
就是小弟要把個東西移動到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

06/10 11:14, , 1F
dlopen dlsym 這不知道是不是你要的 @@?
06/10 11:14, 1F

06/10 11:41, , 2F
dlopen不是等同於loadlibrary嗎?
06/10 11:41, 2F

06/10 11:41, , 3F
我是講被加載的so,有沒有辦法在被加載時做些判斷。
06/10 11:41, 3F

06/10 11:42, , 4F
不過關就讓外面加載失敗。
06/10 11:42, 4F

06/10 12:53, , 5F
這應該和__attribute__((constructor))
06/10 12:53, 5F

06/10 12:54, , 6F
__attribute__((destructor)) 有關吧
06/10 12:54, 6F

06/10 13:49, , 7F
剛查了一些文,那請問要怎樣讓他加載失敗呢?
06/10 13:49, 7F

06/10 13:51, , 8F
int __attribute__ ((constructor)) my_init(void)
06/10 13:51, 8F

06/10 13:51, , 9F
只要讓他return 0就會加載失敗了嗎?
06/10 13:51, 9F

06/10 15:30, , 10F
試的結果不行。。不能用單純的return 0讓外面失敗
06/10 15:30, 10F

06/10 15:31, , 11F
那請問要怎做才會讓外面加載失敗呢?
06/10 15:31, 11F
文章代碼(AID): #1C45N8k6 (C_and_CPP)