如何从共享库函数获取返回值?
问题描述:
我阅读了一些关于在其中加载共享库和调用函数的教程。我在两点都成功了。只有一件事我没有在任何教程中看到:如何从共享库函数获取返回值?
如何从共享库中的函数将值返回给主代码?
这是我的共享库来源:
#include <stdio.h>
char* entry(){
printf("this is a working plugin\n");
return "here we go!";
}
当我打电话吧,我得到“这是一个工作插件”的标准输出。我的问题是现在,我怎么能得到“我们开始吧”字符串返回到其看起来像的main.c:
void *lib_handle;
void (*lib_func)();
...
lib_handle = dlopen("/home/tectu/projects/tibbers/plugins.so", RTLD_LAZY);
if(!lib_handle)
error("coudln't load plugins", NULL);
lib_func = dlsym(lib_handle, "entry");
if(!lib_func)
error("coudln't find symbol in plugin library", NULL);
(*lib_func)(); // here i call the entry() from the .so
像这样的东西不起作用:
printf("return value: %s\n, (*lib_func)());
因此,任何想法?
谢谢。
也许是因为这是一个静态字符串?你有没有尝试返回一个int? – Bort