我有一个名为shared.c的文件,我想创建一个libddl.so共享对象,以便我可以从另一个c文件调用。
#include "second.c"
int a(int b)
{
display();
return b+1;
}
int c(int d)
{
return a(d)+1;
}
这里我有display()函数,我想从共享库调用并在second.c中定义为
#include <stdio.h>
void display()
{
printf("we are here");
}
最后我有call.c文件,它将共享库称为
#include <dlfcn.h>
#include <iostream>
using namespace std;
typedef int (*pointer)(int b);
//int (*c)(int d);
int main()
{
int b,d;
void *lib;
pointer calc;
lib=dlopen("libddl.so",RTLD_LAZY);
if (!lib)
{
cerr << "Cannot open library: " << dlerror() << '\n';
return 1;
}
calc= (pointer) dlsym(lib,"a");
b= calc(2);
calc= (pointer) dlsym(lib,"c");
d= calc(2);
dlclose(lib);
cout<<"b="<<b<<"and"<<"d="<<d;
return 0;
}
是否可以从共享库中调用一个函数,其中defination在另一个文件中。????
创建共享库的命令会出现以下错误