2 limin0108 limin0108 于 2013.09.09 10:32 提问

linux动态库静态库问题,大牛请进

/////// 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

测试每次失败,请大牛指示。。。。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!