Unable to load the kernel module with class "IOUSBHostInterface"

Hi Team,


We have a driver code which is originally written for 10.11.6, for USB detection using "IOUSBHostInterface" and "IOUserClient"


Trying to port/make it work for mac 10.14.6, able to compile the code but but facing linking error while loading the modules


(kernel) kxld[com.mycompany.driver]: The super class vtable '__ZTV15IOUSBHostDevice' for vtable '__ZTV24com_mycompany_driver' is out of date. Make sure your kext has been built against the correct headers.

(kernel) kxld[com.mycompany.driver]: The super class vtable '__ZTV12IOUserClient' for vtable '__ZTV30com_mycompany_driver_userClient' is out of date. Make sure your kext has been built against the correct headers.

(kernel) Can't load kext com.mycompany.driver- link failed.


also the below

(kernel) kxld[om.mycompany.driver2]: The super class vtable '__ZTV20IOEthernetController' for vtable '__ZTV18com_mycompany_driver'2 is out of date. Make sure your kext has been built against the correct headers.


I found IOUSBHostInterface is deprecated in higher versions, if possible can you share the alternative for this for the USB enumeration and other operation


Thanks

Venkat

Replies

Hi

On Which SDK you are trying to build your kext. If your kext is built with a higher SDK than the one on which you want to use you may get this kind of error.

For example, if you build your kext on 10.15 with 10.15 SDK and try to load the same on 10.14 you will get this error.