【发布时间】:2011-07-04 05:35:06
【问题描述】:
我有很多静态库。一个是 static_lib_a.a。我创建了一个动态库 dynamic_lib.so 来将它们放在一起。
在 static_lib_a.a 中,它使用 xerces 3.1.1 来解析 xml。以下是static_lib_a.a
中的代码sn-pxerces::DOMElement *pElementNode = dynamic_cast<xerces::DOMElement *>(pNode);
pNode 的类型是 xerces::DOMNode。它被分配给 xerces::DOMElement 的对象。这行代码将进行向下转换。
为了隐藏dynamic_lib.so中static_lib_a.a的所有符号,我使用-fvisibility=hidden来构建这个静态库。我发现如果我添加 -fvisibility=hidden,pElementNode 将在运行时返回一个 NULL 指针。
gcc 编译器的版本是 3.4.4。
以前有没有人遇到过类似的问题?
【问题讨论】:
-
你的编译器太旧了。您是否尝试过使用较新版本的 gcc 编译代码?
-
我不能这样做,因为其他旧模块是在 gcc 3.4.4 中构建的