我正在尝试使用I/O kit,并已正确链接到I/O kit。
当我在I/O kit中使用一个函数并且没有在静态函数内调用它时,我会收到以下错误:Undefined symbols for architecture x86_64
。
这里有一个示例可用于抑制该错误。
static void test(void)
{
if (IORegisterForSystemPower(...))
{
}
}
这里有一个会导致错误的示例。
void test(void)
{
if (IORegisterForSystemPower(...))
{
}
}
任何关于为什么会发生这种情况的建议?
编辑:
以下是精确的错误信息:
Undefined symbols for architecture x86_64:
"_IORegisterForSystemPower", referenced from:
_registerNotificaitonUsingIOKit in AppDelegate.o
"_IONotificationPortGetRunLoopSource", referenced from:
_registerNotificaitonUsingIOKit in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)