//dll.c
#include<stdio.h>
void myprint(char *a)
{
printf(a);
}
编译生成dll.so动态链接 库文件:
#gcc -o dll.so -shared dll.c
//main.c
#include<dlfcn.h>
int main()
{
void *pHandler = dlopen("./dll.so" ,RTLD_NOW);
if(!pHandler) {
printf("%s\n",dlerror());
exit(1);
}
char * error;
typedef void * (*myprint)();
myprint pfGetInterface;
pfGetInterface = (myprint)dlsym(pHandler,"myprint");
error = dlerror();
if(error) {
printf("%s\n",error);
exit(1);
}
pfGetInterface("hello");
}
编译生成a.out:
#gcc -rdynamic -ldl main.c
#include<stdio.h>
void myprint(char *a)
{
printf(a);
}
编译生成dll.so动态链接 库文件:
#gcc -o dll.so -shared dll.c
//main.c
#include<dlfcn.h>
int main()
{
void *pHandler = dlopen("./dll.so" ,RTLD_NOW);
if(!pHandler) {
printf("%s\n",dlerror());
exit(1);
}
char * error;
typedef void * (*myprint)();
myprint pfGetInterface;
pfGetInterface = (myprint)dlsym(pHandler,"myprint");
error = dlerror();
if(error) {
printf("%s\n",error);
exit(1);
}
pfGetInterface("hello");
}
编译生成a.out:
#gcc -rdynamic -ldl main.c