reverse dependency problem while dlopen shared lib
Hi everyone ,
I am using loading a shared library dynamically in my code using dlopen() & then calling a function of it which in turn calling the function of my own program .But this is giving "undefined reference" problem .Please see the following snap of the code :
Code for main Program :
==================================
/*sample.c*/
#include <dlfcn.h>
#include "sample_header.h"
void main_fun(int k)
{
printf("\n ***** In Main Fun : %d",k);
}
void main()
{
char *error;
void (*sample_fptr)(int);
void *handle = dlopen ("./sample_shared.so", RTLD_LAZY);
if (!handle)
{
printf ("\n%s\n", dlerror());
return;
}
dlerror();
sample_fptr = dlsym(handle, "shared_fun");
if ((error = dlerror()) != 0)
{
printf ("\n%s\n", dlerror());
return;
}
(*sample_fptr)(7);
printf("Done ........\n");
}
compilation command used : gcc -ldl sample.c
==============================================================
------------------------
//sample_header declaration is :
/*sample_header.h*/
#include <stdio.h>
void main_fun(int k);
--------------------------
Code for sample_shared.c :
++++++++++++++++++++++++++++++
#include "sample_header.h"
void shared_fun(int k);
void shared_fun(int k)
{
main_fun(k);
}
compilation command : gcc -shared -Wall sample_shared.c -o sample_shared.so
++++++++++++++++++++++++++++
Result @ runtime : ./sample_shared.so: undefined symbol: main_fun
Any suggestion to resolve this issue is appreciated.
Thanx in Advance
Kapil
|