Linux静态库调用问题
我现在有两个静态库每个静态库里面只有1个函数,而且函数的接口是一样的但实现不一样,代码分别如下:a.cpp:#include"a.h"#include<iostream>...
我现在有两个静态库 每个静态库里面只有1个函数,而且函数的接口是一样的 但实现不一样,代码分别如下:
a.cpp :
#include "a.h"
#include <iostream>
int xglupt()
{
std::cout < < "this is a haha" < < std::endl;
return 0;
}
b.cpp :
int xglupt()
{
std::cout < < "this is b hahaha" < < std::endl;
return 0;
}
然后我又创建了两个动态库,每个动态库连接一个静态库,每个动态库也只有一个函数,在这个函数里面会调用静态库里面的函数 代码分别如下:
c.cpp :
#include "a.h"
#include "c.h"
int cfunc()
{
return xglupt();
}
d.cpp :
#include "a.h"
#include "c.h"
int cfund()
{
return xglupt();
}
然后我又创建了一个可执行程序,这个可执行程序调用两个动态库的函数 代码如下:
e.cpp :
#include "d.h"
int main (int argc, char**argv)
{
cfunc();
dfunc();
return 0;
}
我期望的结果:
this is a haha
this is b hahaha
可实际结果根据连接时两个动态库的先后顺序分别是:
this is a haha
this is a haha
和:
this is b hahaha
this is b hahaha
就是说先加载的哪个动态库就会使用那个动态库链接的静态库中的函数。请问这个问题如何解决,如何才能得到我想要的结果? 谢谢大家了! 展开
a.cpp :
#include "a.h"
#include <iostream>
int xglupt()
{
std::cout < < "this is a haha" < < std::endl;
return 0;
}
b.cpp :
int xglupt()
{
std::cout < < "this is b hahaha" < < std::endl;
return 0;
}
然后我又创建了两个动态库,每个动态库连接一个静态库,每个动态库也只有一个函数,在这个函数里面会调用静态库里面的函数 代码分别如下:
c.cpp :
#include "a.h"
#include "c.h"
int cfunc()
{
return xglupt();
}
d.cpp :
#include "a.h"
#include "c.h"
int cfund()
{
return xglupt();
}
然后我又创建了一个可执行程序,这个可执行程序调用两个动态库的函数 代码如下:
e.cpp :
#include "d.h"
int main (int argc, char**argv)
{
cfunc();
dfunc();
return 0;
}
我期望的结果:
this is a haha
this is b hahaha
可实际结果根据连接时两个动态库的先后顺序分别是:
this is a haha
this is a haha
和:
this is b hahaha
this is b hahaha
就是说先加载的哪个动态库就会使用那个动态库链接的静态库中的函数。请问这个问题如何解决,如何才能得到我想要的结果? 谢谢大家了! 展开
若以下回答无法解决问题,邀请你更新回答
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询