我有我想写的代码,我有一个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”'来设置它。 –
非常感谢,它帮助我分配了一次,我修复了功能信息。 –
“未定义的参考”是链接错误,不是编译错误。重新阅读编译和链接的基础知识,仔细检查如何链接所有翻译单元。 –
该函数的签名不能提供足够的信息来说明如何调用它。但是,如果您不知道该功能的要求,那么您不应该使用它。所以解决办法是,不要。 –