OSX CGGetActiveDisplayList -> ld:未找到体系结构的符号 x86_64
OSX CGGetActiveDisplayList -> ld: symbol(s) not found for architecture x86_64
我正在尝试为 nodejs 模块编写跨系统显示管理。我在 windows 上取得了成功,但现在我卡在了 osx 上(linux 是下一个)。
我只是无法让这段代码正常工作。我正在使用 "make osx" 进行编译并且工作正常,只要我不使用 CGGetActiveDisplayList。
https://developer.apple.com/documentation/coregraphics/1454603-cggetactivedisplaylist
据我研究,我包含了正确的头文件,但我更怀疑这一点,但不能 find/see 任何其他信息。
如果我注释掉 CGGetActiveDisplayList 代码,CGDirectDisplayID 仍然会被接受,所以我假设它不是完全错误的。这可能很简单,但我已经卡了几个小时了,这很令人沮丧。
我尝试使用 osx.m (objective_c) 并得到同样的错误。
文件是"osx.cc"
#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
import/include 头文件还不够,您必须将 Core Graphics
框架添加到链接器。框架名称显示在您引用的手册中。请看类似问题的回答Undefined symbols for architecture x86_64 in Objective-C
- Select 项目左侧项目导航器中的项目文件 window in xcode.
- Select 要在项目设置编辑器中添加框架的目标。
- Select“Build Phases”选项卡,然后单击“Link Binary With Libraries”旁边的小三角形以查看应用程序中的所有框架。
- 要添加框架,请单击框架列表下方的“+”。
- Select 个所需的框架。
我正在尝试为 nodejs 模块编写跨系统显示管理。我在 windows 上取得了成功,但现在我卡在了 osx 上(linux 是下一个)。
我只是无法让这段代码正常工作。我正在使用 "make osx" 进行编译并且工作正常,只要我不使用 CGGetActiveDisplayList。 https://developer.apple.com/documentation/coregraphics/1454603-cggetactivedisplaylist
据我研究,我包含了正确的头文件,但我更怀疑这一点,但不能 find/see 任何其他信息。
如果我注释掉 CGGetActiveDisplayList 代码,CGDirectDisplayID 仍然会被接受,所以我假设它不是完全错误的。这可能很简单,但我已经卡了几个小时了,这很令人沮丧。
我尝试使用 osx.m (objective_c) 并得到同样的错误。
文件是"osx.cc"
#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
import/include 头文件还不够,您必须将 Core Graphics
框架添加到链接器。框架名称显示在您引用的手册中。请看类似问题的回答Undefined symbols for architecture x86_64 in Objective-C
- Select 项目左侧项目导航器中的项目文件 window in xcode.
- Select 要在项目设置编辑器中添加框架的目标。
- Select“Build Phases”选项卡,然后单击“Link Binary With Libraries”旁边的小三角形以查看应用程序中的所有框架。
- 要添加框架,请单击框架列表下方的“+”。
- Select 个所需的框架。