2016-06-30 13 views
0

Ich muss einige Operationen in meiner C++ - App durchführen, wenn ich in Mac OS schlafe und aufwache. Ich werde darauf hingewiesen, das I/O-Kit zu verwenden.Build schlägt fehl, wenn Methoden von I/O Kit auf XCode verwendet werden

Ich folgte this guide, speziell "Listing 3". Bei den #include-Direktiven für IOKit sind keine Buildfehler aufgetreten.

jedoch Build schlägt fehl, wenn ich IOAllowPowerChange() oder IOCancelPowerChange() Kommentar-:

versucht
Undefined symbols for architecture x86_64: 
    "_IOAllowPowerChange", referenced from: 
     SleepCallback(void*, unsigned int, unsigned int, void*) in MyAppFrameWork.a(PowerWatcher.o) 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

I IOKit.framework in Projekteinstellungen Hinzufügen> Build Phases> Link Binary mit Bibliotheken, die noch nichts geändert hat.

Was fehlt mir?

EDIT

gleicher Fehler tritt auf, wenn jede Methode von I/O-Kit, einschließlich: IONotificationPortGetRunLoopSource() und IORegisterForSystemPower().

Keine Fehler, obwohl, wenn für IONotificationPortRef

Antwort

0

Variablen, zum Beispiel erklärt, sollte es wirklich durch die Verknüpfung gegen IOKit.framework gelöst werden. Bist du sicher, dass du es zum richtigen Ziel hinzugefügt hast? Sie müssen dagegen in der endgültigen ausführbaren Datei oder im Framework verlinken. Statische Bibliotheken können nicht mit Frameworks verknüpft werden.

+0

Sie haben Recht, ich habe es auf das falsche Ziel, ein Framework hinzugefügt. – Obay