1
我已經使用dlopen
加載對象,並使用dlsym
來獲取指向共享對象函數的函數指針。一切正常。我已經測試了它的調用,然後共享函數(現在)只能打印並且工作 - 在主程序中調用它的打印效果很好。現在我想傳遞兩個參數給這個函數。一個int
和一個char *
。任何人都可以幫助我理解如何將參數傳遞給共享函數?我在網上搜索,但我不明白它是如何工作的。將參數傳遞給共享函數 - C
我已經使用dlopen
加載對象,並使用dlsym
來獲取指向共享對象函數的函數指針。一切正常。我已經測試了它的調用,然後共享函數(現在)只能打印並且工作 - 在主程序中調用它的打印效果很好。現在我想傳遞兩個參數給這個函數。一個int
和一個char *
。任何人都可以幫助我理解如何將參數傳遞給共享函數?我在網上搜索,但我不明白它是如何工作的。將參數傳遞給共享函數 - C
負載的功能:
int (*func)(int x, char *y) = dlsym(dl_handle, "your_function");
你可能會決定你需要從dlsym()
回報鑄造;它是動態加載庫的uglines之一。
調用它:
int i = 37;
char buffer[64];
int result1 = (*func)(i, buffer); // Old school — pre-C89 (but still works and is explicit)
int result2 = func(i+1, buffer); // New school — can leave you looking for the wrong thing.
非常感謝!它工作正常。:) – SpyrosR
是不是隻是一個使函數有兩個參數的關係嗎? –
是的,首先我必須修改函數原型...我知道這...但我不知道如何用主程序的參數調用它。 – SpyrosR
它不應該與調用不在共享庫中的函數不同。你熟悉這個嗎? –