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

Ele*_*ito 5 c++ linker dynamic-cast dlopen undefined-reference

我有一个 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
Run Code Online (Sandbox Code Playgroud)

我尝试添加-rdynamic到我的链接器命令中,但这似乎没有改变任何东西。我能做些什么吗?

由于我看到很多关于未定义虚函数导致的相同错误消息的问题,我应该提到我确定这不是我的问题。

另外我应该补充一点,我确定这与dynamic_cast有关,因为如果我用正常(Impl*)的转换替换dynamic_cast,代码链接正确。