Keine Kerneldatei angegeben Fehler in der KEXT MAC-Umgebung
-
27-10-2019 - |
Frage
Ich versuche, KEXT für USBHID-Gerät zu implementieren.Wenn ich auf Terminal überprüfe, kann es KEXT laden, dh
Newtok: Desktop Rasheed $ kextutil -nt SampleKextDriver.kext
Keine Kerneldatei angegeben;Verwenden des laufenden Kernels zum Verknüpfen.
SampleKextDriver.kext scheint ladbar zu sein (einschließlich der Verknüpfung für On-Disk-Bibliotheken).
Aber leider habe ich die obige Nachricht erhalten.Meine Plist-Datei ist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>SampleKextDriver</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.apple.dts.driver.SampleKextDriver</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Mustahfa</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>IOKitPersonalities</key>
<dict>
<key>Device Driver</key>
<dict>
<key>bConfigurationValue</key>
<integer>1</integer>
<key>bInterfaceNumber</key>
<integer>0</integer>
<key>CFBundleIdentifier</key>
<string>com.apple.dts.driver.SampleKextDriver</string>
<key>IOMatchingCategory</key>
<string>com_apple_dts_driver_SampleKextDriver</string>
<key>IOProviderClass</key>
<string>IOUSBDevice</string>
<key>idProduct</key>
<integer>4389</integer>
<key>idVendor</key>
<integer>8192</integer>
<key>IOClass</key>
<string>IOService</string>
<key>IOProviderClass</key>
<string>IOUSBInterface</string>
</dict>
</dict>
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.iokit.IOHIDFamily</key>
<string>1.6.4</string>
<key>com.apple.kpi.iokit</key>
<string>10.7</string>
<key>com.apple.kpi.libkern</key>
<string>10.7</string>
</dict>
</dict>
</plist>
Ich weiß nicht, wo ich falsch gemacht habe, ich habe nicht viel Erfahrung in der Mac OS X-Entwicklung.Kann jemand bitte die besten Dokumente oder eine Idee vorschlagen
Vielen Dank für Ihre Informationen ...
Lösung
1.U sollte beim Laden Ihres Kextes nicht die Option -n verwenden.
Die Option -n für kextutil scheint nur zum Generieren der Symboldatei verwendet zu werden.
Die Option -t für kextutil gibt den fehlgeschlagenen Grund aus, wenn ein Fehler auftritt.
Für weitere Informationen zu kextutil sollten Sie man kextutil in das Terminal eingeben.
2. Ich empfehle Ihnen, das Terminal zu öffnen und follow-Befehle einzugeben, um die Version der Kexts zu bestimmen, von denen Ihr Treiber abhängt.(Natürlich sollten Sie die niedrigste Version des Systems angeben, die Ihr Treiber unterstützen muss.)
kextstat | grep com.apple.iokit.IOHIDFamily
kextstat | grep com.apple.kpi.iokit
kextstat | grep com.apple.kpi.libkern
Aktualisieren Sie dann das OSBundleLibraries-Wörterbuch der info.plist Ihres Treibers.
3.Hoffentlich ist dies nützlich für u.Ich wünsche Ihnen einen schönen Tag!