从c中的共享库调用函数

时间:2015-06-04 10:52:26

标签: c shared-libraries

我有一个名为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在另一个文件中。????

创建共享库的命令会出现以下错误enter image description here

0 个答案:

没有答案