动态加载类的dynamic_cast会导致未定义的引用

时间:2014-06-09 13:09:45

标签: c++ linker undefined-reference dynamic-cast dlopen

我有一个C ++类,其定义将在运行时通过dlopen加载。虽然我无法联系到它。我得到错误,说有一个"未定义的对typeinfo"。

的引用

代码的相关部分如下所示:

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有关,因为如果我用正常(Impl*)强制替换dynamic_cast,代码会正确链接。

0 个答案:

没有答案