OSX CGGetActiveDisplayList — & gt; ld: символы не найдены для архитектуры x86_64

Я пытаюсь написать кросс-системное управление отображением для модуля 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

0

Решение

Недостаточно импортировать / включать заголовочные файлы, вы должны добавить Core Graphics рамки для компоновщика. Имя фреймворка показано в руководстве, на которое вы ссылаетесь. Пожалуйста, посмотрите на ответ на аналогичный вопрос Неопределенные символы для архитектуры x86_64 в Objective-C

  1. Выберите файл проекта в навигаторе проекта в левой части окна проекта в xcode.
  2. Выберите цель для того, куда вы хотите добавить рамки в редакторе настроек проекта.
  3. Выберите вкладку «Build Phases» и щелкните маленький треугольник рядом с «Link Binary With Libraries», чтобы просмотреть все фреймворки в вашем приложении.
  4. Чтобы добавить рамки, нажмите «+» под списком структур.
  5. Выберите желаемые рамки.
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]