2012-11-21 60 views
1

我已經使用dlopen加載對象,並使用dlsym來獲取指向共享對象函數的函數指針。一切正常。我已經測試了它的調用,然後共享函數(現在)只能打印並且工作 - 在主程序中調用它的打印效果很好。現在我想傳遞兩個參數給這個函數。一個int和一個char *。任何人都可以幫助我理解如何將參數傳遞給共享函數?我在網上搜索,但我不明白它是如何工作的。將參數傳遞給共享函數 - C

+2

是不是隻是一個使函數有兩個參數的關係嗎? –

+0

是的,首先我必須修改函數原型...我知道這...但我不知道如何用主程序的參數調用它。 – SpyrosR

+1

它不應該與調用不在共享庫中的函數不同。你熟悉這個嗎? –

回答

7

負載的功能:

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. 
+0

非常感謝!它工作正常。:) – SpyrosR