[英]In C++ how could I cast a sub class instance from one base class pointer to another without dynamic_cast?
[英]How to dynamic cast a class from another kext?
我有两个kexts, kextA
和kextB
。 在kextA
,我试图动态转换(使用OSDynamicCast
)指向kextB
类的指针。
$ sudo kextutil -n -t -d B.kext A.kext
Diagnostics for VD.kext:
...
kxld[com...]: The following symbols are unresolved for this kext:
kxld[com...]: classInB::metaClass
Link failed (error code 5).
Check library declarations for your kext with kextlibs(8).
有没有办法做到这一点?
在A.kext
链接classInB
将在加载时给出错误(符号已存在)。
您需要在kextA的Info.plist中将kextB声明为依赖项:在OSBundleLibraries
词典中,将kextB的反向DNS捆绑标识符添加为密钥,并将其捆绑版本添加为值。 您还需要将kextB放在/ SLE或/ LE(10.9+)中,因为这是搜索依赖项的唯一位置(无论是否已加载kextB)。
假设您将不只是强制转换,而是实际调用classInB
特有的方法。 如果您需要做的只是测试一个特定的类,那么您也可以不用链接就可以做到这一点:
OSMetaClass* classInB_mc = OSMetaClass::getMetaClassWithName("classInB");
OSMetaClassBase* cast_ptr = object_ptr->metaCast(classInB_mc);
if (cast_ptr)
{
// object_ptr can indeed be cast to classInB
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.