Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OSX CGGetActiveDisplayList->;ld:找不到架构x86_64的符号_C++_Objective C_Macos_Core Graphics_Build Error - Fatal编程技术网

C++ OSX CGGetActiveDisplayList->;ld:找不到架构x86_64的符号

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仍然会被接受,所以我假设它不是完全错误的。这可能很

我正在尝试为nodejs模块编写跨系统显示管理。我在windows上取得了成功,但现在我被osx卡住了(linux是下一个)

我就是不能让这么短的代码工作。我使用“makeOSX”进行编译,只要不使用CGGetActiveDisplayList,就可以正常工作。

就我所研究的而言,我包含了正确的头文件,但我对此表示怀疑,但找不到/看不到任何其他信息

如果我注释掉CGGetActiveDisplayList代码,CGDirectDisplayID仍然会被接受,所以我假设它不是完全错误的。这可能很简单,但我已经被困了几个小时,这相当令人沮丧

我尝试了osx.m(objective_c)并得到了相同的错误

文件是“osx.cc”


仅导入/包含头文件是不够的,您必须向链接器添加
核心图形
框架。框架名称显示在您引用的手册中。请看类似问题的答案

  • 从xcode中项目窗口左侧的项目导航器中选择项目文件
  • 在项目设置编辑器中选择要添加框架的目标
  • 选择“buildphases”选项卡,然后单击“linkbinary With Libraries”旁边的小三角形以查看应用程序中的所有框架
  • 要添加框架,请单击框架列表下方的“+”
  • 选择所需的框架

  • 逐字显示您收到的错误,已更新。很好,肯。谢谢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