提问人:Elektito 提问时间:6/9/2014 最后编辑:Elektito 更新时间:6/9/2014 访问量:699
使用动态加载的类dynamic_cast会导致未定义的引用
dynamic_cast with dynamically loaded class causes undefined reference
问:
我有一个 C++ 类,其定义将在运行时通过 加载。不过我无法让它链接。我收到错误,说存在“对 typeinfo 的未定义引用”。dlopen
代码的相关部分如下所示:
class Interface { ... };
class Impl : public Interface { ... };
Interface *Create() { ... }
// Load shared object around here
Impl *impl = dynamic_cast<Impl*>(Create()); // Undefined reference to typeinfo
我尝试添加到我的链接器命令中,但这似乎没有改变任何事情。我能做些什么吗?-rdynamic
由于我看到许多关于未定义的虚函数引起的相同错误消息的问题,我应该提到我确定这不是我的问题。
另外,我应该补充一点,我确信这与dynamic_cast有关,因为如果我用正常的强制转换替换dynamic_cast,代码链接就会正确。(Impl*)
答: 暂无答案
评论
dlopen
dlsym
dlopen
ld
g++
-Wl,-Bstatic -Wl,-Bdynamic
g++ foo.cc