我有一个与另一个(第三方)共享库链接的共享库。 然后,在我的应用程序中使用dlopen加载我的共享库。 所有这些都可以正常工作(假设文件位于正确的路径中,等等)。
现在的问题是,当我链接库时,甚至不需要指定要链接到第三方共享库的链接。 GCC接受它时不会报告有关未定义引用的错误。 所以,这个问题; 如何强制GCC通知我有关未定义引用的信息?
如果我将库更改为(临时)可执行文件,则将获得未定义的引用(当不将库提供给链接器时)。 (如果指定,效果很好。)
即,完成以下操作:
g++ -fPIC -shared -o libb.so b.o
g++ -fPIC -shared -o liba.so a.o
g++ -o a.exe a.cpp
第二行不显示错误,第三行抱怨未定义的引用。
样例代码:
啊:
class a
{
public:
void foobar();
};
a.cpp:
#include "a.h"
#include "b.h"
void a::foobar()
{
b myB;
myB.foobar();
}
int main()
{
a myA; myA.foobar();
}
b.h:
class b
{
public:
void foobar();
};
b.cpp:
#include "b.h"
void b::foobar()
{
}
猜你喜欢: