Я пытаюсь написать кросс-системное управление отображением для модуля nodejs. Я был успешным на Windows, но теперь я застрял на OSX (Linux является следующим).
Я просто не могу заставить этот короткий кусочек кода работать. Я компилирую с «make osx», и это прекрасно работает, пока я не использую CGGetActiveDisplayList.
https://developer.apple.com/documentation/coregraphics/1454603-cggetactivedisplaylist
Насколько я исследовал, я включаю правильный заголовочный файл, но я сомневаюсь в этом больше, но не могу найти / увидеть другую информацию.
Если я закомментирую код CGGetActiveDisplayList, CGDirectDisplayID все равно будет принят, поэтому я предполагаю, что это не совсем неправильно. Это, наверное, довольно просто, но я застрял на несколько часов, и это довольно неприятно.
Я попытался с osx.m (target_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
Недостаточно импортировать / включать заголовочные файлы, вы должны добавить Core Graphics
рамки для компоновщика. Имя фреймворка показано в руководстве, на которое вы ссылаетесь. Пожалуйста, посмотрите на ответ на аналогичный вопрос Неопределенные символы для архитектуры x86_64 в Objective-C
Других решений пока нет …