C++ OSX CGGetActiveDisplayList->;ld:找不到架构x86_64的符号
我正在尝试为nodejs模块编写跨系统显示管理。我在windows上取得了成功,但现在我被osx卡住了(linux是下一个) 我就是不能让这么短的代码工作。我使用“makeOSX”进行编译,只要不使用CGGetActiveDisplayList,就可以正常工作。 就我所研究的而言,我包含了正确的头文件,但我对此表示怀疑,但找不到/看不到任何其他信息 如果我注释掉CGGetActiveDisplayList代码,CGDirectDisplayID仍然会被接受,所以我假设它不是完全错误的。这可能很简单,但我已经被困了几个小时,这相当令人沮丧 我尝试了osx.m(objective_c)并得到了相同的错误 文件是“osx.cc”C++ OSX CGGetActiveDisplayList->;ld:找不到架构x86_64的符号,c++,objective-c,macos,core-graphics,build-error,C++,Objective C,Macos,Core Graphics,Build Error,我正在尝试为nodejs模块编写跨系统显示管理。我在windows上取得了成功,但现在我被osx卡住了(linux是下一个) 我就是不能让这么短的代码工作。我使用“makeOSX”进行编译,只要不使用CGGetActiveDisplayList,就可以正常工作。 就我所研究的而言,我包含了正确的头文件,但我对此表示怀疑,但找不到/看不到任何其他信息 如果我注释掉CGGetActiveDisplayList代码,CGDirectDisplayID仍然会被接受,所以我假设它不是完全错误的。这可能很
仅导入/包含头文件是不够的,您必须向链接器添加
核心图形
框架。框架名称显示在您引用的手册中。请看类似问题的答案
逐字显示您收到的错误,已更新。很好,肯。谢谢S.M。我是从命令行生成的,不是用XCode。我还没有试过,但这很有道理!
#ifdef __APPLE__
#include <ApplicationServices/ApplicationServices.h>
int main(int argc, const char * argv[]){
printf("\nHello!\n\n");
CGDirectDisplayID displays[32];
uint32_t count;//sizeof(displays)/sizeof(displays[0])
if (CGGetActiveDisplayList(32, displays, &count) != kCGErrorSuccess)
{
printf("failed to get display list");
exit(EXIT_FAILURE);
}
}
#endif
make osx
c++ osx.cc -o osx
Undefined symbols for architecture x86_64:
"_CGGetActiveDisplayList", referenced from:
_main in osx-b7fd55.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [osx] Error 1