我有我想寫的代碼,我有一個void函數,信息。如何調用外部函數?
void info(char *,char *);
這,我想從我的主要功能在一個單獨的文件中調用。我想用dlopen打開這樣的文件。我將如何調用函數:info。從我的其他文件?
我試圖使用
info("testing: ","Success");
我對我的信息功能得到一個未定義的引用錯誤。
我有我想寫的代碼,我有一個void函數,信息。如何調用外部函數?
void info(char *,char *);
這,我想從我的主要功能在一個單獨的文件中調用。我想用dlopen打開這樣的文件。我將如何調用函數:info。從我的其他文件?
我試圖使用
info("testing: ","Success");
我對我的信息功能得到一個未定義的引用錯誤。
通常的路徑是這樣的:
/* Set up a typedef for the function pointer to make the code nicer */
tyepdef void(*Info_ptr)(char*, char*);
/* Get the function, lib must be the dlopened library.*/
Info_ptr info;
info = (Info_ptr)dlsym(lib, "info");
/* Use the function pointer */
(*info)("testing: ", "Success");
我發現現在它的名字'undefined symbol:info' –
檢查你的.so以確保你已經得到了你期望的符號。 YOu可以使用'nm'來幫助你。如果你的'info'函數也是C++,那麼你需要像本教程中那樣使用'extern「C」'來設置它。 –
非常感謝,它幫助我分配了一次,我修復了功能信息。 –
「未定義的參考」是鏈接錯誤,不是編譯錯誤。重新閱讀編譯和鏈接的基礎知識,仔細檢查如何鏈接所有翻譯單元。 –
該函數的簽名不能提供足夠的信息來說明如何調用它。但是,如果您不知道該功能的要求,那麼您不應該使用它。所以解決辦法是,不要。 –