/////// static.h
void static_print();
///////static.cpp
#include
#include "static.h"
void static_print() {
std::cout<<"This is static_print function"<
}
////// shared.h
void shared_print();
////// shared.cpp
#include
#include "shared.h"
#include "static.h"
void shared_print() {
std::cout<<"This is shared_print function";
static_print();
}
#include
#include
#include
#include
#include "static.h"
using namespace std;
int main()
{
typedef void (*FUN_ADD)(void);
FUN_ADD fun = NULL;
void* plib;
plib = dlopen("./libshared.so", RTLD_NOW | RTLD_GLOBAL);
if( NULL == plib )
cout << "Can't open the libshared.so\n";
else
cout << "Open the libshared.so!\n";
fun = (void (*)(void))dlsym(plib, "shared_print");
if( NULL == fun )
cout << "Can't load function 'shared_print'\n";
fun();
dlclose(plib);
return 0;
}
g++ -c static.cpp
ar -r libstatic.a static.o
g++ shared.cpp -shared -fPIC -o libshared.so
g++ test.cpp -o test libstatic.a -ldl
测试每次失败,请大牛指示。。。。