链接哪个库(OSX)

Wil*_*ris 9 c macos linker build

有人能把我说对吗?我正在使用链接,-lIOKit但显然也需要另一个库。

Undefined symbols for architecture x86_64:
  "___CFConstantStringClassReference", referenced from:
      CFString in code-9daAw9.o
  "_kCFBooleanTrue", referenced from:
      _dimDisplayNow in code-9daAw9.o
Run Code Online (Sandbox Code Playgroud)

这是代码(可在http://www.cocoabuilder.com/archive/cocoa/191807-sleep-display.html找到)

#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/IOKitLib.h>

static int dimDisplayNow(void) 
{
    io_registry_entry_t r =
        IORegistryEntryFromPath(kIOMasterPortDefault,
        "IOService:/IOResources/IODisplayWrangler");
    if(!r) return 1;
    int err = IORegistryEntrySetCFProperty(r, CFSTR("IORequestIdle"),
                                           kCFBooleanTrue);
    IOObjectRelease(r);
    return err;
}

int main(int argc, char **argv)
{
    dimDisplayNow();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

NSG*_*God 8

您需要链接CoreFoundation.framework,这是您在第一行代码中包含的内容。(CoreFoundation的CFin___CFConstantStringClassReferencekCFBooleanTrue代表)。

  • 使用 `-framework CoreFoundation` 代替 `-l`。(它在`/System/Library/Frameworks` 中,但你不必太担心。) (8认同)