看板 C_and_CPP 關於我們 聯絡資訊
就是小弟要把個東西移動到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